第四周课程总结&实验报告二
第四周课程总结&实验报告二
第四周课程总结
不知不觉java课程已经上到第四周了。先来说说本周在课内课外的收获吧:本周更加什么的i奥杰了Java的封装性和getter、setter方法。还学习了构造方法和构造函数,构造方法要与类名称相同,没有返回值类型申明,还学习了string类的一些知识,比如书本上的一个String类的常用操作方法表,还有两种”等于“的区别,==是比较地址,equals是比较内容,我个人觉得equals比较稳妥,本周作业就遇到了类似的问题,输入的操作字符地址不一样导致账户中的输入密码不一样。还有this、static关键字,还有对象数组。static类的方法可以直接调用,this方法要带this关键字。这些知识挺晦涩的。弄了半天都没弄懂,做题的时候还是一团糟。本周作业挺难的,花了巨多时间。相关资料
对象数组的声明
先定义,再开辟空间
类名称 对象数组名[] = null; 对象数组名 = new 类名称[长度];
定义并开辟数组
类名称 对象数组名[] = new 类名称[长度
在声明对象数组后 ,必须对每个数组成员进行实例化话 才能直接使用,否则报空指针异常!
String 对象描述
字符串是 JavaScript 的一种基本的数据类型。
String 对象的 length 属性声明了该字符串中的字符数。
String 类定义了大量操作字符串的方法,例如从字符串中提取字符或子串,或者检索字符或子串。
需要注意的是,JavaScript 的字符串是不可变的(immutable),String 类定义的方法都不能改变字符串的内容。像 String.toUpperCase() 这样的方法,返回的>是全新的字符串,而不是修改原始字符串。
在较早的 Netscape 代码基的 JavaScript 实现中(例如 Firefox 实现中),字符串的行为就像只读的字符数组。例如,从字符串 s 中提取第三个字符,可以用 >s[2] 代替更加标准的 s.charAt(2)。此外,对字符串应用 for/in 循环时,它将枚举字符串中每个字符的数组下标(但要注意,ECMAScript 标准规定,不能枚举 >length 属性)。因为字符串的数组行为不标准,所以应该避免使用它。
String类知识点
实验报告:
实验二 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就好了。
实验截图: