博客
关于我
强烈建议你试试无所不能的chatGPT,快点击我
第四周总结&第二次实验报告
阅读量:4350 次
发布时间:2019-06-07

本文共 6567 字,大约阅读时间需要 21 分钟。

实验二 Java简单类与对象

实验目的

  • 掌握类的定义,熟悉属性、构造函数、方法的作用,掌握用类作为类型声明变量和方法返回值;
  • 理解类和对象的区别,掌握构造函数的使用,熟悉通过对象名引用实例的方法和属性;
  • 理解static修饰付对类、类成员变量及类方法的影响。

    实验内容

  1. 写一个名为Rectangle的类表示矩形。其属性包括宽width、高height和颜色color,width和height都是double型的,而color则是String类型的。要求该类具有:

(1) 使用构造函数完成各属性的初始赋值

(2) 使用get…()和set…()的形式完成属性的访问及修改

(3) 提供计算面积的getArea()方法和计算周长的getLength()方法

实验过程

class Rectangle {    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 Rectangle(double width,double height,String color) {        this.setColor(color);        this.setHeight(height);        this.setWidth(width);    }    private double width;    private double height;    private  String color;    public double getArea() {        return width * height;    }    public double getLength() {        return (width + height) * 2;    }}public class Example {    public static void main(String args[]) {        Rectangle angle = null;        angle = new Rectangle(4,5,"red");        System.out.println("矩形的颜色为:"+angle.getColor());        System.out.println("矩阵的周长为:"+angle.getLength());        System.out.println("矩阵的面积为:"+angle.getArea());    }}

实验结果

1580249-20190918105859554-1481863516.png

  1. 银行的账户记录Account有账户的唯一性标识(11个长度的字符和数字的组合),用户的姓名,开户日期,账户密码(六位的数字,可以用0开头),当前的余额。银行规定新开一个账户时,银行方面提供一个标识符、账户初始密码123456,客户提供姓名,开户时客户可以直接存入一笔初始账户金额,不提供时初始余额为0。定义该类,并要求该类提供如下方法:存款、取款、变更密码、可以分别查询账户的标识、姓名、开户日期、当前余额等信息。

    实验过程】

import java.util.*;public class Account {    public String getId() {        return id;    }    public void setId(String id) {        this.id = id;    }    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 String getPassword() {        return password;    }    public void setPassword(String password) {        this.password = password;    }    public double getBalance() {        return balance;    }    public void setBalance(double balance) {        this.balance = balance;    }    public static String getRandomNumbersAndString(int length) {        String base = "ABCDEFGHIJKLMNOPQRSTUVWXYZ0123456789abcdefghijklmnopqrstuvwxyz";        return getRandomString(length, base);    }    private static String getRandomString(int length, String base) {        Random random = new Random();        StringBuffer sb = new StringBuffer();        for (int i = 0; i < length; i++) {            int number = random.nextInt(base.length());            sb.append(base.charAt(number));        }        return sb.toString();    }    /*private static String getUniqueRandomString(int length, String base) {        // TODO Auto-generated method stub        return null;    }*/    //private Date date = new Date();        private String id = getRandomNumbersAndString(11);    private String name;    private String password = "123456";    private double balance;    public  Account(String name,double balance) {        this.setName(name);        this.setBalance(balance);    }    public Account() {            }    public double Deposit(double n) {        this.balance = balance + n;        return balance;    }    public double Draw(double m) {        this.balance = balance - m;        return balance;    }    public String Changepassword(String password) {        this.password = password;        return password;    }}import java.util.*;public class Example2 {    public static void main(String args[]) {        Account yonghu = null;        yonghu = new Account("及你太美",0);        Date date = new Date();        Scanner in= new Scanner(System.in);        Scanner sr = new Scanner(System.in);        String str;        System.out.println("输入相应的英文进行操作。。。。。。。。");        while(true) {        str = in.nextLine();        if(str == "exit") {            break;        }        switch(str) {        case "Deposit":{            double n = in.nextDouble();            System.out.println("用户的余额还有:"+yonghu.Deposit(n));            System.out.println("输入exit结束程序。。。。。。");            break;        }        case "Draw":{            double n = in.nextDouble();            System.out.println("用户的余额剩余:"+yonghu.Draw(n));            System.out.println("输入exit结束程序。。。。。。");            break;        }        case "Changepassword":{            String str2;            str2 = in.nextLine();            System.out.println("用户的密码改为:"+yonghu.Changepassword(str2));            System.out.println("输入exit结束程序。。。。。。");            break;        }        case "date":{            System.out.println("用户的开户日期为:"+date);            System.out.println("输入exit结束程序。。。。。。");            break;        }        case "id":{            System.out.println("用户标识为:"+yonghu.getId());            System.out.println("输入exit结束程序。。。。。。");            break;        }        case "name":{            System.out.println("用户的姓名为:"+yonghu.getName());            System.out.println("输入exit结束程序。。。。。。");            break;        }        case "balance":{            System.out.println("用户的当前余额为:"+yonghu.getBalance());            System.out.println("输入exit结束程序。。。。。。");            break;        }        case "exit":{            System.exit(0);            System.out.println("程序关闭正常");        }        default:{            System.out.println("输入错误请重新输入:");            System.out.println("输入exit结束程序。。。。。。");            break;        }        }        }        /*System.out.println(yonghu.getId());        System.out.println(date);*/        in.close();        sr.close();    }}

实验结果

1580249-20190918110537590-413970581.png

总结:

这次的实验总体来说还算可以,第一题没什么问题,第二题有一点问题,开始定义了一些在Account类中的方法,然后想在另一个类中使用,开始不能用,提示说要定义为static属性,然后想了一下定义为static那些set跟get就没用了,后面一想,可以用对象调用,把这个问题解决了,后面又出了一个在switch中yonghu这个对象要为空,出现了这么一个错误,后来把对象的实例化放到前面去就可以了,没有这个错误了,这个题目还有一些没有实现,比如是否开户,开户了每一个人的账户内容保存在那,不能这个程序只能保存一个的吧,还有产生的随机账户,如果后面有重复账户怎么办,本来还想把它优化一下的,想用对象数组来保存每一个对象,但是这个题目在周二我就做好了,所以也不想改了,时间我是不知道怎么保存。

第四周总结:

本周主要讲了String类,还讲了对象数组,以及Java数组的定义。

String类

我们一直使用String定义字符串,一种是直接赋值,还有一种是调用String的构造方法,两种赋值方法效果类似。但有一些区别,直接赋值是如果开辟了一个堆空间来保存这个字符串,那么后面又出现这个字符串的赋值,就不会再开辟空间,而构造方法则是开辟了两个空间,甚至更多

String对象内容的比较,如果一个直接赋值,和一个用构造方法赋值的一样的字符串,进行直接比较,会出现false
1580249-20190919141207261-310316075.png
1580249-20190919141332495-1250597770.png

所以要用eauals()方法比较这个方法只比较内容,但是会区分大小写。

字符串一旦声明就不可改变
1580249-20190919141805080-677610241.png

还有一些String类的一些常用操作方法

1580249-20190919141950025-1994796791.png

对象数组

所谓对象数组,就是包含了一组相关的对象数组,数组一定要先开辟空间,因为其是引用数据类型,所以数组每一个对象都是null值,则再引用对象数组时都要对其进行实例化操作

1580249-20190919142813122-1687925500.png

1580249-20190919142817820-1892143957.png

1580249-20190919142852906-1807138370.png

1580249-20190919142858260-1502211018.png

转载于:https://www.cnblogs.com/xiao--liang/p/11540504.html

你可能感兴趣的文章
Nginx配置文件nginx.conf中文详解(总结)
查看>>
Linux的用户态和内核态
查看>>
JavaScript原生错误及检测
查看>>
(原创) cocos2d-x 3.0+ lua 学习和工作(4) : 公共函数(3): 深度克隆clone()
查看>>
为什么写作
查看>>
整数子数组求最大和添加验证
查看>>
使用kubeadm安装Kubernetes
查看>>
Principal Component Analysis 主元分析
查看>>
JDBC原生态代码
查看>>
韩版可爱小碎花创意家居收纳挂袋
查看>>
计算机基础之硬件
查看>>
python操作mysql ------- SqlAchemy正传
查看>>
如何使用 JSP JSTL 显示/制作树(tree) 菜单
查看>>
12.5号
查看>>
lintcode-medium-Binary Tree Zigzag Level Order Traversal
查看>>
logrotate日志切割
查看>>
POJ-3253 Fence Repair 贪心
查看>>
Arraylist集合遍历输出
查看>>
java中的选择结构与循环结构
查看>>
无法将类型“ASP.login_aspx”转换为“System.Web.UI.WebControls.Login”
查看>>