第四周课程总结&实验报告二
第四周课程总结
不知不觉java课程已经上到第四周了。先来说说本周在课内课外的收获吧:本周更加什么的i奥杰了Java的封装性和getter、setter方法。还学习了构造方法和构造函数,构造方法要与类名称相同,没有返回值类型申明,还学习了string类的一些知识,比如书本上的一个String类的常用操作方法表,还有两种”等于“的区别,==是比较地址,equals是比较内容,我个人觉得equals比较稳妥,本周作业就遇到了类似的问题,输入的操作字符地址不一样导致账户中的输入密码不一样。还有this、static关键字,还有对象数组。static类的方法可以直接调用,this方法要带this关键字。这些知识挺晦涩的。弄了半天都没弄懂,做题的时候还是一团糟。本周作业挺难的,花了巨多时间。相关资料
对象数组的声明 先定义,再开辟空间 类名称 对象数组名[] = null; 对象数组名 = new 类名称[长度]; 定义并开辟数组 类名称 对象数组名[] = new 类名称[长度 在声明对象数组后 ,必须对每个数组成员进行实例化话 才能直接使用,否则报空指针异常!
实验报告:
实验二 Java简单类与对象
实验目的
掌握类的定义,熟悉属性、构造函数、方法的作用,掌握用类作为类型声明变量和方法返回值;
理解类和对象的区别,掌握构造函数的使用,熟悉通过对象名引用实例的方法和属性;
理解static修饰付对类、类成员变量及类方法的影响。
实验内容
1.写一个名为Rectangle的类表示矩形。其属性包括宽width、高height和颜色color,width和height都是double型的,而color则是String类型的。要求该类具有:
(1) 使用构造函数完成各属性的初始赋值
(2) 使用get…()和set…()的形式完成属性的访问及修改
(3) 提供计算面积的getArea()方法和计算周长的getLength()方法
2.银行的账户记录Account有账户的唯一性标识(11个长度的字符和数字的组合),用户的姓名,开户日期,账户密码(六位的数字,可以用0开头),当前的余额。银行规定新开一个账户时,银行方面提供一个标识符、账户初始密码123456,客户提供姓名,开户时客户可以直接存入一笔初始账户金额,不提供时初始余额为0。定义该类,并要求该类提供如下方法:存款、取款、变更密码、可以分别查询账户的标识、姓名、开户日期、当前余额等信息。
1.rectangle
源代码:
package test; class Rectangle{ private String color; private double width; private double height; public Rectangle(String color,double width,double height){ this.setColor(color); this.setWidth(width); this.setHeight(height); } public void talk(){ System.out.println("宽:"+getWidth()+"高:"+getHeight()); System.out.println("面积:"+getArea()+" 周长:"+getLength()); System.out.println("颜色:"+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(){ double getArea=getWidth()*getHeight(); return getArea; } public double getLength(){ double getLength=(getWidth()+getHeight())*2; return getLength; } } public class Rectangle2 { public static void main(String[]arge){ Rectangle per; per=new Rectangle("red",10,12); per.talk(); } }
实验截图:
2.account
源代码:
package test; import java.util.Scanner; import java.util.Date; import java.util.*; class Account{ private String sign; private String id; private Date date; private String password; private double savedMoney; public Account(String password,String id,String sign,double savedMoney){ this.sign="abcdef12345"; this.id="Lwx"; this.date=new Date(); this.password="123456"; this.savedMoney=0.0; } public void setSign(String sign) { this.sign=sign; } public String getSign() { return sign; } public Date getDate() { return date; } public void setDate(Date date) { this.date = date; } public String getPassword() { return password; } public void setPassword(String password) { this.password = password; } public String getId() { return id; } public void setId(String id) { this.id = id; } public double getSavedMoney() { return savedMoney; } public void setSavedMoney(double savedMoney) { this.savedMoney=savedMoney; } public void saveAndGet(){ System.out.println("1.存款 "+"\n"+"2.取款"); Scanner sc=new Scanner(System.in); double number=sc.nextInt(); if(number==1) { System.out.println("您的余额为:"+getSavedMoney()+"元"); System.out.println("请输入存入的金额:"); double money1=sc.nextDouble(); setSavedMoney(getSavedMoney()+money1); System.out.println("succeed,当前余额为:"+getSavedMoney()+"元"); } else if(number==2) { System.out.println("您的余额为:"+getSavedMoney()+"元"); System.out.println("请输入取出的金额:"); double money2=sc.nextDouble(); setSavedMoney(getSavedMoney()-money2); System.out.println("succeed,当前余额为:"+getSavedMoney()+"元"); } } public void changePassword(){ System.out.println("输入密码:"); Scanner sc=new Scanner(System.in); String x = sc.nextLine(); if(x.equals(getPassword())) { System.out.println("设置新密码:"); Scanner ja=new Scanner(System.in); String password1 = ja.nextLine(); System.out.println("请确认密码是否有误:"); String password2 = sc.nextLine(); if(password1.equals(password2)) { setPassword(password1); System.out.println("操作成功,新密码:"+getPassword()); } else { System.out.println("两次输入密码不同!"); }} else { System.out.println("密码错误!"); } } public void checkInfo() { System.out.println("输入密码查询信息:"); Scanner sc=new Scanner(System.in); String s = sc.nextLine(); if(s.equals(getPassword())) { System.out.println("标识:"+getSign()); System.out.println("姓名:"+getId()); System.out.println("余额:"+getSavedMoney()+"元"); System.out.println("开户日期:"+getDate()); } else { System.out.println("您的密码错误"); } } public static void main(String[] args) { boolean Y=true; Account Ac=new Account("123456","LWX","abcdef12345",0.0); while(Y) { System.out.println("1.取款存款"); System.out.println("2.修改密码"); System.out.println("3.查询信息"); System.out.println("4.退出"); System.out.println("请输入下一步操作的数字:"); Scanner sc=new Scanner(System.in); int b=sc.nextInt(); if(b==1) { Ac.saveAndGet(); } else if(b==2) { Ac.changePassword(); } else if(b==3) { Ac.checkInfo(); } else if(b==4) { System.out.println("退出系统!"); } } } }
遇到的问题:老是无法进入我所构建的方法中,还有总是输入密码错误。
解决方法:我吧获取时间的date弄进了实例化中去了,我把他删了就好了,密码错误问题,我吧==换成equals就好了。
实验截图: