第四周课程总结&实验报告(二)
Java实验报告(二)
实验二 Java简单类与对象
一、 实验目的
(1) 掌握类的定义,熟悉属性、构造函数、方法的作用,掌握用类作为类型声明变量和方法返回值;
(2) 理解类和对象的区别,掌握构造函数的使用,熟悉通过对象名引用实例的方法和属性;
(3) 理解static修饰付对类、类成员变量及类方法的影响。
二、 实验内容
- 写一个名为Rectangle的类表示矩形。其属性包括宽width、高height和颜色color,width和height都是double型的,而color则是String类型的。要求该类具有:
(1) 使用构造函数完成各属性的初始赋值
(2) 使用get…()和set…()的形式完成属性的访问及修改
(3) 提供计算面积的getArea()方法和计算周长的getLength()方法
- 银行的账户记录Account有账户的唯一性标识(11个长度的字符和数字的组合),用户的姓名,开户日期,账户密码(六位的数字,可以用0开头),当前的余额。银行规定新开一个账户时,银行方面提供一个标识符、账户初始密码123456,客户提供姓名,开户时客户可以直接存入一笔初始账户金额,不提供时初始余额为0。定义该类,并要求该类提供如下方法:存款、取款、变更密码、可以分别查询账户的标识、姓名、开户日期、当前余额等信息。
三、实验过程(请自己调整格式)
1. 写一个名为Rectangle的类表示矩形。其属性包括宽width、高height和颜色color,width和height都是double型的,而color则是String类型的。要求该类具有:
(1) 使用构造函数完成各属性的初始赋值
(2) 使用get…()和set…()的形式完成属性的访问及修改
(3) 提供计算面积的getArea()方法和计算周长的getLength()方法
实验源码:
package work;
class Rectangle1 {
private double width, height;
private String color; //声明变量属性
public Rectangle1(double width, double height, String color) { //定义构造方法为属性初始化并赋值
this.setWidth(width);
this.setHeight(height);
this.setColor(color);
}
public void result() { //取得信息的方法
System.out.println("面积:"+getArea()+",周长:"+getLength()+",颜色:"+getColor());
}
public double getWidth(){ //取得宽度
return width;
}
public void setWidth(double width) { //设置宽度
this.width = width;
}
public double getHeight() { //取得高度
return height;
}
public void setHeight(double height) { //设置高度
this.height = height;
}
public String getColor() { //取得颜色
return color;
}
public void setColor(String color) { //设置颜色
this.color = color;
}
public double getArea() { //计算面积
return this.width*this.height;
}
public double getLength() { //计算周长
return (this.width+this.height)*2;
}
}
public class Rectangle{
public static void main(String args[]) {
Rectangle1 sum = new Rectangle1(15.00,16.00,"black"); //调用构造方法,传递参数
sum.result(); //传出信息
}
}
实验中遇到的问题:
1.在新建类时直接设置了public static void main(String args[]) ,并在其中使用了this,出现了错误,依靠提示将其修改。
2这是我在本题中花费时间最长的问题,进行了各种修改才发现是我在输出时没有将color输出。
3.在不断修改第二题的过程中我突然发现了两种返回getArea()方法和getLength()方法结果的办法
实验结果:
2. 银行的账户记录Account有账户的唯一性标识(11个长度的字符和数字的组合),用户的姓名,开户日期,账户密码(六位的数字,可以用0开头),当前的余额。银行规定新开一个账户时,银行方面提供一个标识符、账户初始密码123456,客户提供姓名,开户时客户可以直接存入一笔初始账户金额,不提供时初始余额为0。定义该类,并要求该类提供如下方法:存款、取款、变更密码、可以分别查询账户的标识、姓名、开户日期、当前余额等信息。
package work;
import java.util.Scanner;
class Bank {
private String tag, name, time;
private int password;
private double balance;
public Bank(String tag, String name, String time, int password, double balance) {
this.setTag(tag);
this.setName(name);
this.setTime(time);
this.setPassword(password);
this.setBalance(balance);
}
public String getTag() {
return tag;
}
public void setTag(String tag) {
this.tag = tag;
}
public String getName() {
return name;
}
public void setName(String name) {
this.name = name;
}
public String getTime() {
return time;
}
public void setTime(String time) {
this.time = time;
}
public int getPassword() {
return password;
}
public void setPassword(int password) {
this.password = password;
}
public double getBalance() {
return balance;
}
public void setBalance(double balance) {
this.balance = balance;
}
Scanner s = new Scanner(System.in);
public void SaveOrTake() {
int num = s.nextInt();
if(num<=0&&balance<=0)
System.out.println("余额不足");
else
balance += num;
}
public void ChangePW() {
int p = s.nextInt();
if(p != 123456)
System.out.println("密码错误");
else
System.out.println("请输入新密码");
int n = s.nextInt();
password = n;
}
}
public class Account{
public static void main(String[] args) {
Bank str;
str=new Bank("123456789eq","LI","20190922",123456,666.01);
Scanner sc = new Scanner(System.in);
int a = sc.nextInt();
switch(a){
case 1:
str.SaveOrTake();
break;
case 2:
str.ChangePW();
break;
case 3:
System.out.println("123456789eq");
break;
case 4:
System.out.println("20190922");
break;
}
}
}
实验中遇到的问题:
1.第一个遇到的问题就是不知道怎么随机给账户生成一个唯一标识。看了学委的博客发现他是用了base64编码,百度了一下base64编码,了解了这是个什么东西,但是我目前还是不会使用。
2.开户日期应该连接网络同步上传,这里我也还不太懂该怎么弄,但是在搜索的过程中发现了别人的代码,这部分还有待实验。
import java.util.Calendar;
import java.util.Date;
public class gaintime {
/**
* @param args
*/
public static void main(String[] args) {
Date today = new Date();
System.out.println("当前时间是" + today.toString());
Calendar now = Calendar.getInstance();
int day = now.get(Calendar.DATE);
int time = now.get(Calendar.HOUR_OF_DAY);
System.out.println(time);
四、 总结
1.第一题很简单,但是在做之前发现不记得上课讲了什么,再翻书复习的构造函数
2.第二题还有很多遗留问题,希望能在之后的学习过程中得到解答
第四周课程总结
1.实例化String对象:
①直接赋值:String name = "li";
②通过new方法:String name =new String ("li");
2.String类中几种内容比较方式
①“==”
②重点:使用equals()
String str = "hello";
String str1="world";
if(str.equals(str1))
{
System.out.println("相等");
}
else
{
System.out.println("不相等");
}
运行结果:
不相等
2.String类的常用方法
17.18可用来查找指定字符串
19用来比较字符串内容
第四周课程总结&实验报告(二)的更多相关文章
- 第四周课程总结&实验报告二
第四周课程总结 第四周课程总结 本周重点为学习String;首先String用以创建字符串,且通过有一次课堂练习加强理解到:String 类是不可改变的,一旦创建了 String 对象,那它的值就无法 ...
- 第十四周课程总结 & 实验报告
一.JDBC JDBC概述 JDBC提供了一种与平台无关的用于执行SQL语句的标准JavaAPI,可以方便的实现多种关系型数据库的统一操作,它由一组用Java语言编写的类和接口组成 JDBC的主要操作 ...
- 第四周课程总结&实验报告
实验报告 1.写一个名为Rectangle的类表示矩形. 其属性包括宽width.高height和颜色color,width和height都是double型的,而color则是String类型的.要求 ...
- 第十四周课程总结&实验报告
简单记事本的实现 实验源码 主类 package test1; import javax.swing.JFrame; import javax.swing.JTextArea; public clas ...
- 第十四周课程总结&实验报告(简单记事本的实现)
1.JDBC概述 JDBC提供了一种与平台无关的用于执行SQL语句的标准JavaAPI,可以方便的实现多种关系型数据库的统一操作,它由一组用Java语言编写的类和接口组成 主要常用操作类与接口: ja ...
- 第四周总结&实验报告二
第四周总结&实验报告二 课程总结 这周我们学习了string类,以及很多string类的很多操作方法,同时string也是一个对象,在用到它时我们首字母需要大写,这周我们还加深了对函数构造的理 ...
- 20145221 《Java程序设计》实验报告二:Java面向对象程序设计
20145221 <Java程序设计>实验报告二:Java面向对象程序设计 实验要求 初步掌握单元测试和TDD 理解并掌握面向对象三要素:封装.继承.多态 初步掌握UML建模 熟悉S.O. ...
- Java实验报告二:Java面向对象程序设计
Java实验报告二:Java面向对象程序设计 ...
- 20145203盖泽双:Java实验报告二
Java实验报告二:Java面向对象程序设计 实验要求: 初步掌握单元测试和TDD 理解并掌握面向对象三要素:封装.继承.多态 初步掌握UML建模 熟悉S.O.L.I.D原则 了解设计模式 实验内容 ...
随机推荐
- [人物存档]【AI少女】【捏脸数据】时尚
点击下载(城通网盘):3in1.zip 点击下载(城通网盘):存档.zip
- 顺序表应用3:元素位置互换之移位算法(SDUT 3326)
题解:用一个for,循环m次,每次都把最前面的放到最后面,就可以了. #include <stdio.h> #include <stdlib.h> #include <s ...
- AcWing:111. 畜栏预定(贪心 + 小根堆)
有N头牛在畜栏中吃草. 每个畜栏在同一时间段只能提供给一头牛吃草,所以可能会需要多个畜栏. 给定N头牛和每头牛开始吃草的时间A以及结束吃草的时间B,每头牛在[A,B]这一时间段内都会一直吃草. 当两头 ...
- android 开发随手记
1.Fragment 跳转到Activity 修改数据,修改完后从Activity 返回(返回键)Fragment ,要求刷新Fragment界面的数据 解决办法: 在Fragment中注册一个监听广 ...
- 使用yum安装nginx
在CentOS 7中安装Nginx. 当使用以下命令安装Nginx时,发现无法安装成功. 1 yum install -y nginx 需要做一点处理. 安装Nginx源 执行以下命令: 1 rpm ...
- $\LaTeX$数学公式大全10
$10\ Array\ environment,examples$ $\left( \begin{array}{cc} 2\tau & 7\phi-frac5{12} \\ 3\psi &am ...
- Java多线程核心知识(跳槽面试必备)
多线程相对于其他 Java 知识点来讲,有一定的学习门槛,并且了解起来比较费劲.在平时工作中如若使用不当会出现数据错乱.执行效率低(还不如单线程去运行)或者死锁程序挂掉等等问题,所以掌握了解多线程至关 ...
- LeetCode 260. 只出现一次的数字 III(Single Number III)
题目描述 给定一个整数数组 nums,其中恰好有两个元素只出现一次,其余所有元素均出现两次. 找出只出现一次的那两个元素. 示例 : 输入: [1,2,1,3,2,5] 输出: [3,5] 注意: 结 ...
- linux出现Redirecting to /bin/systemctl start mysqld.service,解决方法
上去就是一个命令 /bin/systemctl start httpd.service
- windos批处理启动redis与哨兵
为各个启动单独建立脚本后用总的bat调用 创建脚本,redis6379.bat脚本内容:@echo offtitle redis-serverset ENV_HOME6379="G:\Red ...