实验二 Java简单类与对象
**实验目的**
掌握类的定义,熟悉属性、构造函数、方法的作用,掌握用类作为类型声明变量和方法返回值;
理解类和对象的区别,掌握构造函数的使用,熟悉通过对象名引用实例的方法和属性;
理解static修饰付对类、类成员变量及类方法的影响。
**实验内容**
一: 写一个名为Rectangle的类表示矩形。其属性包括宽width、高height和颜色color,width和height都是double型的,而color则是String类型的。要求该类具有:
(1) 使用构造函数完成各属性的初始赋值
(2) 使用get…()和set…()的形式完成属性的访问及修改
(3) 提供计算面积的getArea()方法和计算周长的getLength()方法
二: 银行的账户记录Account有账户的唯一性标识(11个长度的字符和数字的组合),用户的姓名,开户日期,账户密码(六位的数字,可以用0开头),当前的余额。银行规定新开一个账户时,银行方面提供一个标识符、账户初始密码123456,客户提供姓名,开户时客户可以直接存入一笔初始账户金额,不提供时初始余额为0。定义该类,并要求该类提供如下方法:存款、取款、变更密码、可以分别查询账户的标识、姓名、开户日期、当前余额等信息。
一: 写一个名为Rectangle的类表示矩形。其属性包括宽width、高height和颜色color,width和height都是double型的,而color则是String类型的。要求该类具有:
(1) 使用构造函数完成各属性的初始赋值
(2) 使用get…()和set…()的形式完成属性的访问及修改
(3) 提供计算面积的getArea()方法和计算周长的getLength()方法
1)实验代码:
public class Rectangle {
private String color="红色";
private double width;
private double height;
public void setColor(String color) { //构造法为属性初始化
this.color=color;
}
public void setWidth(double width) {
this.width=width;
}
public void setHeight(double height) {
this.height=height;
}
public String getColor() {
return color;
}
public double getWidth() {
return width;
}
public double getHeight() {
return height;
}
public double getArea() { //计算面积
return width*height;
}
public double getLength() { //计算周长
return 2*(width+height);
}
public static void main(String args[]) {
Rectangle r=new Rectangle();
r.setWidth(29);
r.setHeight(30);
System.out.println("高 ="+r.getHeight());
System.out.println("宽 ="+r.getWidth());
System.out.println("颜色为:"+r.getColor());
System.out.println("面积为:"+r.getArea());
System.out.println("周长为:"+r.getLength());
}
}
2)实验结果
遇到的问题:
计算周长时遗漏了宽和高的另一边,只计算了宽和高的一边,导致答案错误,最后检查的时候发现了并改正了。
二: 银行的账户记录Account有账户的唯一性标识(11个长度的字符和数字的组合),用户的姓名,开户日期,账户密码(六位的数字,可以用0开头),当前的余额。银行规定新开一个账户时,银行方面提供一个标识符、账户初始密码123456,客户提供姓名,开户时客户可以直接存入一笔初始账户金额,不提供时初始余额为0。定义该类,并要求该类提供如下方法:存款、取款、变更密码、可以分别查询账户的标识、姓名、开户日期、当前余额等信息。
1)实验代码
import java.util.Scanner;
public class Bank { //声明
Scanner sc=new Scanner(System.in);
private String kaihu="qwertyuiopa0";
private String name;
private String time;
private String mima;
private int money;
public String getKaihu() { //构造法为属性初始化
return kaihu;
}
public void setKaihu(String kaihu) {
this.kaihu = kaihu;
}
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 String getMima() {
return mima;
}
public void setMima(String mima) {
this.mima = mima;
}
public int getMoney() {
return money;
}
public void setMoney(int money) {
this.money = money;
}
public void land(){ //界面,用switch进行选择
System.out.println("选项:0 账户标识,1 姓名,2 取款,3 存款,4 改密码, 5 out");
int a=sc.nextInt();
switch(a) {
case(0):kaihu();
break;
case(1):name();
break;
case(2):qukuan();
break;
case(3):cunkuan();
break;
case(4):mima();
break;
case(5):out();
break;
}
}
private void kaihuriqi() {
// TODO Auto-generated method stub
}
private void yue() {
// TODO Auto-generated method stub
}
private void zhanghubiaoshi() {
// TODO Auto-generated method stub
}
public void kaihu() { //输出账户的标识
System.out.println("输出账户的标识"+kaihu);
System.out.println("2019年9月20日");
land();
}
public void name() { //姓名
System.out.println("请输入你的姓名");
Scanner sc=new Scanner(System.in);
String a=sc.nextLine();
name+=a;
land();
}
public void cunkuan() { //存款
System.out.println("请输入存款数");
Scanner sc=new Scanner(System.in);
int a=sc.nextInt();
money+=a;
System.out.println("余额:"+money);
land();
}
public void qukuan() { //取款
System.out.println("请输入取款数");
Scanner sc=new Scanner(System.in);
int a=sc.nextInt();
money-=a;
System.out.println("余额:"+money);
land();
}
public void mima() { //密码
System.out.println("请输入你的密码");
Scanner sc=new Scanner(System.in);
String a=sc.nextLine();
mima=a;
System.out.println("密码为"+mima);
land();
}
public void out() { //返回界面
land();
}
public static void main(String args[]) {
Bank a=new Bank();
a.land();
}
}
2)结果截图
遇到的问题:
刚开始属性的初始化我搞错了一个,而且这道题的密码没有输出来,所以我向老谢请教了这个问题,最后在检查中发现了问题,原来是密码的英文大小写被我搞混淆了,所以把大写字母改成小写就对了。
总结:本周的Java感觉还好,因为第一题很简单,所以我按照书上的构造法来写很快就写出来了,不过第二题有点难,可能是我之前没遇到这种题型,而且我刚开始还没有理解这道题,所以就直接输出了,之后问了李钰·之后才知道我这种方法不行,所以我跟老谢讨论了一下这道题的思路,最后决定用switch·来输入,所以最后做出来了。
本周学到的知识点:构造法和String类,还复习了一下c语言的switch语句。