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


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

    实验二 Java简单类与对象

    • 实验目的
    • 掌握类的定义,熟悉属性、构造函数、方法的作用,掌握用类作为类型声明变量和方法返回值;
    • 理解类和对象的区别,掌握构造函数的使用,熟悉通过对象名引用实例的方法和属性;
    • 理解static修饰付对类、类成员变量及类方法的影响。
    • 实验内容
    1. 写一个名为Rectangle的类表示矩形。其属性包括宽width、高height和颜色color,width和height都是double型的,而color则是String类型的。要求该类具有:

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

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

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

    实验代码:

    package main;
    
    public class Rectangle {
        private  double  width, height;
        private String color;
        public Rectangle(double width,double height,String color){
            this.setHeight(height);
            this.setWidth(width);
            this.setColor(color);
        }
        public  void tell() {
            System.out.println("宽=" +getWidth()+"  "+"长="+getHeight()+"  "+"颜色:"+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 void getArea() {
            double area=0;
            area=this.width*this.height;
            System.out.println("面积="+area);
        }
         public void getLength() {
                double length=0;
                length=2*(this.width+this.height);
                System.out.println("周长="+length);
            }
         public static class Main{
             public static void main(String[] args) {
                    Rectangle per=new Rectangle(10,20,"blue");
                    per.tell();
                    per.getArea();
                    per.getLength();
                }
             }
    }

    实验过程:

    这一道题要比第二题相对简单些,首先定义构造方法为矩形的几个属性初始化,然后可以用eclipse软件自带功能使用get…()和set…()的形式完成属性的访问及修改,然后写出计算面积的getArea()方法和计算周长的getLength()方法,最后调用构造方法输出矩形的信息。在对照书上写完代码后,还是出现了以下错误,改变其他变量的静态修饰符并不能解决,后来只有根据提示将静态修饰符添加到父类型才解决了问题。

     

     实验结果:

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

    实验代码:

    package main;
    
    import java.util.Scanner;
    
    public class Main {
        private String name;
        String date;
        private int password;
        int money;
        private String Account;
            public Main(String name,String date,String Account,int password,int money) {
                this.setName(name);
                this.setDate(date);
                this.setAccount(Account);
                this.setPassword(password);
                this.setMoney(money);
        }
            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 int getPassword() {
            return password;
        }
        public void setPassword(int password) {
            this.password = password;
        }
        public int getMoney() {
            return money;
        }
        public void setMoney(int money2) {
            this.money = money2;
        }
        public String getAccount() {
            return Account;
        }
        public void setAccount(String account2) {
            this.Account = account2;
        }
            public void username(){                  
                System.out.print("用户名称:");
                Scanner username = new Scanner(System.in);
                String name = username.nextLine();
                setName(name);
            }
            public void Changepassword(){                    
                System.out.print("更改密码:");
                Scanner userpassword = new Scanner(System.in);
                int password = userpassword.nextInt();
                setPassword(password);
            }
            public void tell(){                                    
                System.out.print("用户名:"+name+"  开户日期:"+date+"
    账号:"+Account+"    密码:"+password+"
    余额:"+money+"
    ");
            }
      public static void main(String[] args) {
        System.out.print("欢迎!
    ");
        System.out.print("进入系统请按1
    ");
        System.out.print("请选择:");
        Scanner x = new Scanner(System.in);
        int X = x.nextInt();
        int Y=0;
        Main per = new Main("张三","2019.9.20","6666666666",123456,0);
        for(int i=1;i>0;i++){
            if(X==1||Y==1) {
                System.out.print("开户:1     "+"更改密码:2
    "+"查询用户信息:3     ");
                System.out.print("请选择:");
                Scanner p = new Scanner(System.in);
                int A = p.nextInt();
                if(A==1) 
                {
                    per.username();
                }
                else if(A==2)
                {
                    per.Changepassword();
                }
                else if(A==3)
                {
                    per.tell();
                    System.out.print("返回主页面:1
    "+"退出:0
    ");
                    System.out.print("请选择:");
                    Scanner x1 = new Scanner(System.in);
                    X = x1.nextInt();
                    Y=0;
                }
            }
          }
       } 
    }

    实验过程:

    这一题从刚开始的茫然到读懂题意都花了不少的时间,后来看了同学的代码才明白题目要实现什么,就开始照着第一题那样写,首先声明属性并定义构造方法为用户名、开户日期、账号、密码等初始化,然后定义一个开户(没能实现)和改密码的方法,然后根据输入来输出所需要的信息(调用构造方法)。但是那样只能将用户的姓名,开户日期,账户密码,当前的余额输出来,并不能对数据进行改变,再看同学的代码后对自己的代码进行了改进,也只实现了对密码进行了修改,并不能进行开户和存款、取款,但这也花了一下午的时间,今天没时间了,也只能后面在改进了。

    实验结果:

     学习&自我总结

    这周课堂上老师主要讲了string类的常用方法,对一些常用的方法进行了使用讲解,还有string可以采用直接赋值的方式进行操作,也可以通过new方法实例化,而自己在学习上的进步主要还是通过写作业,在做题过程中发现了自己的许多问题,一些在课堂上听懂的写起题目来却写不出,列如Scanner userpassword = new Scanner(System.in)在做题前并不能很好的理解它的意义,但通过查找资料也学到了不少知识,虽然这周作业没有完成,但也有了不少收获,看来学习要多实践才能提高自己,继续努力。

  • 相关阅读:
    Insertion Sort List
    Max Points on a Line
    Evaluate Reverse Polish Notation
    vue路由传参的三种基本方式
    如何搭建一个vue项目
    vue路由跳转时更改页面title
    CSS清除浮动大全共8种方法
    border:none 与border:0的区别
    for..in和for..of的功能
    IE浏览器兼容问题-----html和css的兼容写法
  • 原文地址:https://www.cnblogs.com/198266qq/p/11560089.html
Copyright © 2020-2023  润新知