当前位置: 首页 > news >正文

基于 Object 类及包装类的专项实验

2.1 验证性实验

1、用户类(User)的封装与构造方法实现。调试下面的程序,分析程序的功能和运行结果并添加代码注释。

public class User {​

    private String username;​

    private String password;​

    private String tel;​

​  public User() {}​

​  public User(String username, String password, String tel) {​

        this.username = username;​

        this.password = password;​

        this.tel = tel;​

    }​

      public String getUsername() {​

      return username;​

    }​

    public void setUsername(String username) {​

        this.username = username;​

    }​

    public String getPassword() {​

        return password;​

    }​

    public void setPassword(String password) {​

        this.password = password;​

    }​

    public String getTel() {​

        return tel;​

    }​

    public void setTel(String tel) {​

        this.tel = tel;​

    }​

}

2、在上述 User 类中覆盖 toString 方法,格式为 “username:xxx,password:xxx,tel:xxx”。调试下面的程序,并分析程序的功能和运行结果并添加代码注释。

@Override​

public String toString() {​

    return "username:" + username + ",password:" + password + ",tel:" + tel;​

}

3、在上述 User 类中覆盖 equals 方法,只要用户名相同则判定为相同对象。调试下面的程序,并分析程序的功能和运行结果并添加代码注释。

@Override​

public boolean equals(Object obj) {​

    if (this == obj) return true;​

    if (obj == null || getClass() != obj.getClass()) return false;​

    User user = (User) obj;​

    return username.equals(user.username);​

}

4、编写测试类,调试下面的程序,并分析程序的功能和运行结果并添加代码注释。

import java.util.Scanner;​

public class UserTest {​

    public static void main(String[] args) {​

        Scanner scanner = new Scanner(System.in);​

        System.out.println("请输入第一个用户信息:");​

        System.out.print("用户名:");​

        String username1 = scanner.nextLine();​

        System.out.print("密码:");​

        String password1 = scanner.nextLine();​

        System.out.print("电话:");​

        String tel1 = scanner.nextLine();​

        User user1 = new User(username1, password1, tel1);​

        System.out.println("请输入第二个用户信息:");​

        System.out.print("用户名:");​

        String username2 = scanner.nextLine();​

        System.out.print("密码:");​

        String password2 = scanner.nextLine();​

        System.out.print("电话:");​

        String tel2 = scanner.nextLine();​

    }​

}

5、学生类(Student)的封装与包装类应用。调试下面的程序,分析程序的功能和运行结果并添加代码注释。

public class Student {

    private String name;

    private Integer age;

    private Double score;

   

    public Student() {}

   

    public Student(String name, Integer age, Double score) {

        this.name = name;

        

        this.age = (age != null && age >= 0) ? age : null;

       

        this.score = (score != null && score >= 0 && score <= 100) ? score : null;

    }

    

    public String getName() { return name; }

    public Integer getAge() { return age; }

    public Double getScore() { return score; }

   

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

    public void setAge(Integer age) {

        this.age = (age != null && age >= 0) ? age : null;

    }

    public void setScore(Double score) {

        this.score = (score != null && score >= 0 && score <= 100) ? score : null;

    }

}

6、在上述Student 类基础上覆盖 toString 方法,“姓名:xxx,年龄:xxx,成绩:xxx” ,其中无效数据(null )显示为 “未填写”。调试下面的程序,并分析程序的功能和运行结果并添加代码注释。

@Override

public String toString() {

    String ageStr = (age != null) ? age.toString() : "未填写";

    String scoreStr = (score != null) ? score.toString() : "未填写";

    return "姓名:" + name + ",年龄:" + ageStr + ",成绩:" + scoreStr;

}

7、在 Student 类 set 方法基础上,新增 isAgeValid、isScoreValid 方法。调试下面的程序,并分析程序的功能和运行结果并添加代码注释。

public boolean isAgeValid() {

    return age != null && age >= 0;

}

public boolean isScoreValid() {

    return score != null && score >= 0 && score <= 100;

}

8、编写测试类,调试下面的程序,并分析程序的功能和运行结果并添加代码注释。

public class StudentTest {

    public static void main(String[] args) {

        Scanner scanner = new Scanner(System.in);

        System.out.println("请输入学生信息:");

        System.out.print("姓名:");

        String name = scanner.nextLine();

        System.out.print("年龄:");

        Integer age = null;

        try {

            age = Integer.valueOf(scanner.nextLine());

        } catch (NumberFormatException e) {

            // 输入非数字,age保持null

        }

        System.out.print("成绩:");

        Double score = null;

        try {

            score = Double.valueOf(scanner.nextLine());

        } catch (NumberFormatException e) {

            // 输入非数字,score保持null

        }

        Student student = new Student(name, age, score);

        System.out.println("学生信息:" + student);

        System.out.println("年龄是否有效:" + student.isAgeValid());

        System.out.println("成绩是否有效:" + student.isScoreValid());

        scanner.close();

    }

}

9、包装类常用方法综合应用。调试下面的程序,并分析程序的功能和运行结果并添加代码注释。

public class WrapperMethodTest {

    public static void main(String[] args) {

        String strInt = "100";

        int num = Integer.parseInt(strInt);

        System.out.println("字符串\"100\"转int:" + num);

        String strDouble = "95.5";

        Double d = Double.valueOf(strDouble);

        System.out.println("字符串\"95.5\"转Double:" + d);

        System.out.println("int最大值:" + Integer.MAX_VALUE);

        System.out.println("int最小值:" + Integer.MIN_VALUE);

        System.out.println("double最大值:" + Double.MAX_VALUE);

        System.out.println("double最小值:" + Double.MIN_VALUE);

        Integer a = 50;

        Integer b = 100;

        System.out.println("a compareTo b:" + a.compareTo(b));

    }

}

2.2 自主设计性实验

10、编程实现学生对象信息输出和比较。

要求:定义 Student 类,属性包括学号(id)、姓名(name)、年龄(age),进行封装并提供 get/set 方法及构造方法;重写 toString 方法,格式为 “id:xxx,name:xxx,age:xxx”;重写 equals 方法,学号相同则为相同对象。编写测试类,创建两个 Student 对象,输入信息并判断是否相同,打印对象信息。​

11、编程实现商品类(Goods)的比较​

要求:定义 Goods 类,属性有商品编号(goodsId)、商品名称(goodsName)、价格(price),完成封装、构造方法;重写 equals 方法,商品编号相同则为相同商品;重写 toString 方法展示商品信息。编写测试类,输入两个商品信息,判断是否为同一商品并打印结果。​

http://www.dtcms.com/a/586938.html

相关文章:

  • 洛阳400电话洛阳网站seo公司网站SEO优化哪个做得好
  • 深入理解 CGLIB 代理技术:原理、使用与实战
  • 做网站网站的虚拟空间北滘网站开发
  • 教育培训网站模板摄影网站设计论文
  • 东莞seo建站优化收费网页设计导航字体大小
  • 控制面板网站iis7搭建网站织梦
  • 前端和网站部署做网站的wordpress 导航条
  • 蓟州网站建设可以做编程题的网站
  • 网站开发价格明细湖南seo服务电话
  • 深圳网站建设服务哪便宜那些视频网站能用来直接做href
  • 建设网站需要机房吗昆明旅游网页设计
  • 网站开发 印花税开发一个网站需要多少时间
  • 服务器IP做网址打开网站百度seo优化价格
  • php自己做网站吗建个人网站的详细步骤
  • 网站风格分析怎么写类似猪八戒的网站建设
  • 【开题答辩全过程】以 高考智能填报系统为例,包含答辩的问题和答案
  • 苏州网站建设与网络推广简述网站推广的意义和方法
  • 手机版网站开发工具做模板网站怎么放视频教程
  • 网站建设php培训ui做自适应网站
  • 百中搜网站建设网站开发实战asp制作视频
  • 2025年CSP-X复赛真题及题解(山东):T3 能量水晶
  • 怎么优化网站源代码wordpress自定义登录页背景颜色
  • Android Hilt 入门教程_Hilt原理
  • 青岛做网站优化支付宝小程序开发费用
  • 郑州网站建设最便宜徐州市城乡建设局网站
  • 网站界面设计需要首先做市场研究吗做网站吗
  • TypeVariable
  • 计算机图形学·12 OpenGL Transformations
  • Pycatia二次开发基础代码解析:未分配材料零件识别、工作对象设置与截面平面创建技术解析
  • 阿里云的网站建设方案seo自学网免费