第四周课程总结&试验报告(二)

课程总结

我就总结一下老师上课讲的一些知识点,分点总结一下:
1.三目运算符:
?:组成。例如max=x>y?x:y

相当于if-else语句吧,若满足条件的话就输出前面那个x。
2.构造方法:首先是构造方法的定义格式

   class 类名称{
          访问权限 类名称(类型1 参数1,类型2 参数2,.....){
              程序语句;
              其它            //切记构造方法没有返回值
           }
}

注:程序一般会自动生成一个构造方法
重载:构造方法也能够重载,但是要保持构造方法的名称本身要求与类名称保持一致,即使得每个构造方法的参数类型或者参数个数不同,就能实现重载。
注意:对构造方法进行重载时,所有的重载方法按照参数的个数由多到少或者由少到多。即下面这样:
匿名对象:没有明确给出对象的名字,而且它只在堆内存中开辟空间,不存在栈内存中。
3.String类

用Sring声明的时候首字母要大写。
String有两种赋值方法:一是直接赋值
二是调用String类中的构造方法:
老师上课做过的一个实验就是得出“==”是用来进行地址值比较的。如果要判断两个字符串的内容是否相等的话就要用到String中专门提供的方法:public boolean equals(String str)。注:equals()方法是区分大小写的。。且equals()在相等的时候返回true,不等的时候返回false。
String类声明的字符串不能改变,见下图:
String还有很多类,具体就不一一总结了。
4.static关键字(静态属性或全局属性)
就是用它声明的属性便是公共属性,就是给整个程序共享。
用它声明的方法的话,也可以用其类名称直接调用,全局共享。
5.理解一下main方法
以下图片详见:

实验二 Java简单类与对象

一、实验目的

(1) 掌握类的定义,熟悉属性、构造函数、方法的作用,掌握用类作为类型声明变量和方法返回值;

(2) 理解类和对象的区别,掌握构造函数的使用,熟悉通过对象名引用实例的方法和属性;

(3) 理解static修饰付对类、类成员变量及类方法的影响。

二、实验内容

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

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

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

(3) 提供计算面积的getArea()方法和计算周长的getLength()方法
实验结果:

实验代码:

public class Rectangle {
    private double height;
    private double width;
    private String color;

    public Rectangle(double height, double width, String color) {
        this.height = height;
        this.width = width;
        this.color = color;
    }

    public double getHeight() {
        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 double getArea(){
        return height*width;

    }
    public double getLength(){
       return height*2+width*2;

    }

}
public class Data {
    public static void main(String[] args) {
        Rectangle rectangle=new Rectangle(10,20,"yellow");
        System.out.println(rectangle.getArea());
        System.out.println(rectangle.getLength());
    }
}

实验总结:这个题目我大多是照着书上那个例题来做的,然后那个主类没有搞,就一直无法编译,然后就是没有创造main主类。后面就成功了。其实这个题目还是可以的,就是出现了一些细节上的小问题。
2. 银行的账户记录Account有账户的唯一性标识(11个长度的字符和数字的组合),用户的姓名,开户日期,账户密码(六位的数字,可以用0开头),当前的余额。银行规定新开一个账户时,银行方面提供一个标识符、账户初始密码123456,客户提供姓名,开户时客户可以直接存入一笔初始账户金额,不提供时初始余额为0。定义该类,并要求该类提供如下方法:存款、取款、变更密码、可以分别查询账户的标识、姓名、开户日期、当前余额等信息。
实验结果:


实验代码:

import java.util.*;
public class Account {
    private String name;    //姓名
    private String id;          //账号标识符
    private String dataopend;   //日期
    private String password;      //密码
    private double balance;         //余额

    public String getName() {
        return name;
    }

    public void setName(String name) {
        this.name = name;
    }

    public String getId() {
        return id;
    }

    public void setId(String id) {
        this.id = id;
    }

    public String getDataopend() {
        return dataopend;
    }

    public void setDataopend(String dataopend) {
        this.dataopend = dataopend;
    }

    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 void account() {                           //这里进行开户的类方法
        System.out.println("请输入您的名字:");
          Scanner s = new Scanner(System.in);      
            String name = s.nextLine();           //输入自己的名字               
               System.out.println("开户成功");
        setId("0415 2846 3124 5742 652");       //自己的卡号
               System.out.println("您的账号为:" + getId());

        Date dat = new Date();      
        setDataopend(dat.toString());          //取当前日期
        System.out.println("您的开户日期为:" + getDataopend());

        setPassword("123456");
        System.out.println("您的初始密码为:" + getPassword());

        setBalance(0);                                          //初始余额为0;
        System.out.println("您当前的余额为:" + getBalance());
    }

    public void cun() {                                 //存款
        Scanner s = new Scanner(System.in);
        System.out.println("存款");
        System.out.println("请输入存款金额:");
        setBalance(s.nextDouble() + getBalance());      //录入金额
        System.out.println("交易成功!当前余额为:" + getBalance());
    }

    public void qu() {                 //取款
        Scanner s = new Scanner(System.in);
        System.out.println("取款");
        System.out.println("请输入取款金额:");
        double q = s.nextDouble();
        if (q > getBalance()) {        //可能取得金额大于所存金额
            System.out.println("当前余额不足");
        } else {
            setBalance(getBalance() - q);
            System.out.println("交易成功!当前余额为:" + getBalance());        //拿已有金额减去所取金额
        }
    }

    public void 变更密码() {
        Scanner ss = new Scanner(System.in);
        System.out.println("请输入新密码");
        String x = ss.next();
        setPassword(x);             //输入新密码
        System.out.println("更改成功!");
    }

   
import java.util.Scanner;

public class Kaishigongzuo {             //这里开辟了一个main方法,以保证程序的运行
    public static void main(String[] args){
        System.out.println("WELCOME you!!!!");
        Account per=new Account();
        Scanner a=new Scanner(System.in);
        per.account();
        System.out.println("请选择服务项目:1.存款   2.取款   3.变更密码     ");
        int x=a.nextInt();
        switch(x){
            case 1:per.cun();break;
            case 2:per.qu();break;
            case 3:per.变更密码();break;
        }
        System.out.println("操作完成,按任意键退出,谢谢!");
    }
}

其实这个题目我一开始好多都不会的,但是我问了同学,而且也查阅了好多资料。比如代码开头那个import java.util.;假如你没这句话的话
如果你要用java.util包中的类Scanner的话你就需要这样使用
java.util.Scanner sc = new java.util.Scanner();而import java.util.
;代表你导入了java.util包中的所有类,,这样的话你使用
Scanner就没那么麻烦了Scanner sc = new Scanner();
这样就能很方便的完成输入了,开始的时候和第一题的模式一样的,基本没问题,其实题目的前面一部分我没怎么看懂的,但是题目有一句“定义该类,并要求该类提供如下方法:存款、取款、变更密码、可以分别查询账户的标识、姓名、开户日期、当前余额等信息。”我就按着这个步骤一步一步来,但是在取款的时候没有考虑到会有余额不足的情况,还有查询不知道怎么去做。最后那个主函数,我做了好久,就是per.account();这一步没有加上去,然后一直报错,还有那个switch语句后面的那个存款也没有加括号,后面才记的老师说过,方法后要加()才对。总之花了我四五个小时才把这个题目搞出来的,没有百度和同学们的帮助,估计就搞了一下构造方法就不会了吧!

自我总结

我感觉这周真的挺忙的,还好在老师刚布置作业的时候我就已经写了一些了,下周一定会乖乖的按时间完成,上周的忘记自我总结了,而且格式也有点问题,那个代码还要给出解释,我也没给出,所以得了一个c的评分,但是我确实真的是很用心的去把每个代码敲出来了,还翻了一下上学期C语言的书籍,反正是花了蛮多时间的,以后的作业一定会好好参照那些评分为a的同学的作业,努力向他们看齐,争取让自己做得更好,加油!!!!!

原文地址:https://www.cnblogs.com/2001guqiu/p/11533231.html