实验二 Java简单类与对象
实验目的
掌握类的定义,熟悉属性、构造函数、方法的作用,掌握用类作为类型声明变量和方法返回值;
理解类和对象的区别,掌握构造函数的使用,熟悉通过对象名引用实例的方法和属性;
理解static修饰付对类、类成员变量及类方法的影响。
实验内容
(一)写一个名为Rectangle的类表示矩形。其属性包括宽width、高height和颜色color,width和height都是double型的,而color则是String类型的。要求该类具有:
(1) 使用构造函数完成各属性的初始赋值
(2) 使用get…()和set…()的形式完成属性的访问及修改
(3) 提供计算面积的getArea()方法和计算周长的getLength()方法
实验代码:
package number1;
public class Rectangle {
private double width=12,height=10; \设定初始值
private String color="yellow";
public double getHeight() { \后面的get...()和set...()是用来更改前面设置的变量的初始值
return height;
}
public void setHeight(double height) {
this.height = height;
}
public double getWidth() {
return width;
}
public void setWidth(double width) {
this.width = width;
}
public String getColor() {
return color;
}
public void setColor(String color) {
this.color = color;
}
public void getArea() { \计算面积
double area=0;
area=this.height*this.width;
System.out.println("面积为"+area);
}
public void getLength() { \计算周长
double length=0;
length=(this.height+this.width)*2;
System.out.println("周长为"+length);
}
public static void main(String args[]) {
Rectangle rec=new Rectangle(); \创建一个对象
rec.setWidth(3); \用点方法调用前面的方法
rec.setHeight(4);
rec.setColor("黄色");
rec.getArea();
rec.getLength();
System.out.println("长:"+rec.getWidth()+"
高:"+rec.getHeight()+"
颜色:"+rec.getColor()); \输出
}
}
注意:
输出System.out.println()括号中可以用"...."+"..."+a+".....",其中引号里的是字符串,a是定义的变量,
要放在引号里
实验结果:
(二)银行的账户记录Account有账户的唯一性标识(11个长度的字符和数字的组合),用户的姓名,开户日期,账户密码(六位的数字,可以用0开头),当前的余额。银行规定新开一个账户时,银行方面提供一个标识符、账户初始密码123456,客户提供姓名,开户时客户可以直接存入一笔初始账户金额,不提供时初始余额为0。定义该类,并要求该类提供如下方法:存款、取款、变更密码、可以分别查询账户的标识、姓名、开户日期、当前余额等信息。
实验代码:
package number1;
import java.util.Scanner;
public class robet{
private String name,date="2019.9.19"; \设定初始值
private int cipher=123456,money=0; \后面的get...()和set...()是用来更改前面设置的变量的初始值
private String ccount="abcdefg";
public String getName() {
return name;
}
public void setName(String name) {
this.name = name;
}
public String getDate() {
return date;
}
public void setDate(String date) {
this.date = date;
}
public int getCipher() {
return cipher;
}
public void setCipher(int cipher) {
this.cipher = cipher;
}
public int getMoney() {
return money;
}
public void setMoney(int money) {
this.money = money;
}
public String getCcount() {
return ccount;
}
public void setCcount(String ccount) {
this.ccount = ccount;
}
public void username(){ \这是开户
System.out.print("请输入用户名称:");
Scanner username = new Scanner(System.in);
String name = username.nextLine();
System.out.print("请输入开户时间:");
Scanner userdate = new Scanner(System.in);
String date = userdate.nextLine();
setName(name); \调用set...()把输入的数保存在变量中
setDate(date);
System.out.print("开户成功!
初始密码:123456
开户时间:"+date+"
");
}
public void ChangePWD(){ \这是更改密码
System.out.print("请输入更改密码:");
Scanner usercipher = new Scanner(System.in);
int cipher = usercipher.nextInt();
setCipher(cipher); \调用set...()把输入的数保存在变量中
System.out.print("更改密码成功!
新密码:"+cipher+"
");
}
public void all(){ \这是用户信息
System.out.print("用户名:"+name+" 开户日期:"+date+"
账号:"+ccount+" 密码:"+cipher+"
余额:"+money+"
");
}
public void Depositsandwithdrawals(){ \这是存取款
System.out.print("存款:1
"+"取款:0
");
System.out.print("请选择:");
Scanner j = new Scanner(System.in);
int i = j.nextInt();
if(i==0) { \这是用if语句判断是取款还是存款
System.out.print("取款数:");
Scanner usermoney = new Scanner(System.in);
int money = usermoney.nextInt();
money=this.money-money;
setMoney(money);
}
else {
System.out.print("存款数:");
Scanner usermoney = new Scanner(System.in);
int money = usermoney.nextInt();
money=this.money+money;
setMoney(money); \调用set...()把输入的数保存在变量中
}
}
public static void main(String[] args) {
System.out.print("Welcome
");
System.out.print("进入系统请按1
");
System.out.print("请选择:");
Scanner j = new Scanner(System.in);
int J = j.nextInt();
int I=0;
robet user = new robet(); \创建一个 robet属性的对象
for(int k=1;k>0;) {
if(J==1||I==1) { \这是用if语句判断是否进入系统
System.out.print("开户:1 "+"更改密码:2
"+"查询用户信息:3 "+"存取款:4
");
System.out.print("请选择:");
Scanner b = new Scanner(System.in);
int B = b.nextInt();
if(B==1) { \这是用if语句判断用户是开户还是其他的操作
user.username();
}else if(B==2){
user.ChangePWD();
}else if(B==3){
user.all();
}else if(B==4){
user.Depositsandwithdrawals();
}
System.out.print("返回主页面:1
"+"退出:0
");
System.out.print("请选择:");
Scanner i = new Scanner(System.in);
I = i.nextInt();
J=0;
}else{
break;
}
}
System.out.print("已安全退出");
}
}
实验结果:
Welcome
进入系统请按1
请选择:1
开户:1 更改密码:2
查询用户信息:3 存取款:4
请选择:1
请输入用户名称:黄诺诚
请输入开户时间:2019.09.20
开户成功!
初始密码:123456
开户时间:2019.09.20
返回主页面:1
退出:0
请选择:1
开户:1 更改密码:2
查询用户信息:3 存取款:4
请选择:2
请输入更改密码:456789
更改密码成功!
新密码:456789
返回主页面:1
退出:0
请选择:1
开户:1 更改密码:2
查询用户信息:3 存取款:4
请选择:4
存款:1
取款:0
请选择:1
存款数:1200
返回主页面:1
退出:0
请选择:1
开户:1 更改密码:2
查询用户信息:3 存取款:4
请选择:4
存款:1
取款:0
请选择:0
取款数:200
返回主页面:1
退出:0
请选择:1
开户:1 更改密码:2
查询用户信息:3 存取款:4
请选择:3
用户名:黄诺诚 开户日期:2019.09.20
账号:abcdefg 密码:456789
余额:1000
返回主页面:1
退出:0
请选择:0
已安全退出
总结:
老师这两个题目主要是让我们运用封装(private,get...()和set...()语句)。
这一次的作业我尽力了,两个题分别用了我整整一个下午去完成,第一题很简单,就是老师上课讲的知识,主要是第二题,他的要求比较多,尤其是不同方法中的数值的保存,我最开始就是习惯性用C语言的思维,把值直接赋值就行了,可是经过我的多次运行发现每个方法的变量的值对其其他的方法没有影响,后来我又翻了翻书,想了好一会儿才想起老师上课讲的get...()和set...()的语句,才将问题解决(其实如果我两个题同时写的话就很容易找到解决的方法),我的代码还是有些简陋,还有许多需要改进的地方。革命尚未成功,同志仍需努力啊!