自学内容网 自学内容网

pta-7-6 学生类设计

题目要求:

设计一个类Student,并在Main类中生成Student类对象进行测试

1.对于Student类,设计私有属性name和age,并为每一个成员变量name和age设计其setXXX()和getXXX()方法,并对于setAge方法,如果age被赋值为<=6,则age值为7,其他为参数值。

2.对于Student类,设计无参构造方法,在构造方法中为age赋值为7,name赋值为“无名" 并添加语句System.out.println("无参构造方法");

3.设计方法public void display(),方法中显示该学生的姓名和年龄,显示格式为name:无名,age:8


Main类的main方法中,创建1个学生对象,然后调用display方法显示学生信息,接着通过键盘输入1个学生的姓名和年龄,调用display方法去显示学生信息。

输入格式:

在一行内输入学生的姓名和年龄

输出格式:

对每一组输入,输出学生的姓名和年龄。

输入样例:

在这里给出一组输入。例如:

tom 6
jerry 8

输出样例:

在这里给出相应的输出。例如:

无参构造方法
name:无名,age:7
name:tom,age:7
无参构造方法
name:无名,age:7
name:jerry,age:8

错误答案:

// 定义Student类
class Student {
    private String name; // 学生姓名
    private int age; // 学生年龄

    // 无参构造方法
    public Student() {
        this.name = "无名";
        this.age = 7;
        System.out.println("无参构造方法");
    }

    // name的setter方法
    public void setName(String name) {
        this.name = name;
    }

    // name的getter方法
    public String getName() {
        return name;
    }

    // age的setter方法
    public void setAge(int age) {
        if (age <= 6) {
            this.age = 7;
        } else {
            this.age = age;
        }
    }

    // age的getter方法
    public int getAge() {
        return age;
    }

    // 显示学生信息的方法
    public void display() {
        System.out.println("name:" + name + ",age:" + age);
    }
}

// Main测试类
public class Main {
    public static void main(String[] args) {
        Student student1 = new Student(); // 创建学生对象
        student1.display(); // 显示学生信息

        java.util.Scanner scanner = new java.util.Scanner(System.in);
        while (scanner.hasNextLine()) {
            String[] input = scanner.nextLine().split(" ");
            String name = input[0];
            int age = Integer.parseInt(input[1]);
            student1.setName(name);
            student1.setAge(age);
            student1.display(); // 显示学生信息
        }
        scanner.close();
    }
}

错误显示:

解析:非零显示意思是在返回时就遇见了bug,可能是有什么判断有问题,我们这里的判断只有循环的判断,于是我们改成了这样:

import java.util.Scanner;
// 定义Student类
class Student {
    private String name; // 学生姓名
    private int age; // 学生年龄

    // 无参构造方法
    public Student() {
        this.name = "无名";
        this.age = 7;
        System.out.println("无参构造方法");
    }

    // name的setter方法
    public void setName(String name) {
        this.name = name;
    }

    // name的getter方法
    public String getName() {
        return name;
    }

    // age的setter方法
    public void setAge(int age) {
        if (age <= 6) {
            this.age = 7;
        } else {
            this.age = age;
        }
    }

    // age的getter方法
    public int getAge() {
        return age;
    }

    // 显示学生信息的方法
    public void display() {
        System.out.println("name:" + name + ",age:" + age);
    }
}

// Main测试类
public class Main {
    public static void main(String[] args) {
        Student student1 = new Student(); // 创建学生对象
        student1.display(); // 显示学生信息

        java.util.Scanner scanner = new java.util.Scanner(System.in);
        scanner.hasNextLine();
        String[] input = scanner.nextLine().split(" ");
        String name = input[0];
        int age = Integer.parseInt(input[1]);
        student1.setName(name);
        student1.setAge(age);
        student1.display(); // 显示学生信息
    }
}

结果还是报同样的错误。

既然这样,那有可能是我们的输入判断有问题,这里我们输入是用的第二类输入,就是在遇见了换行符才停止录入,然后我们直接录入一行字符串,然后再解析字符串的各个部分,这里是用空格来分隔,不过如果出现多个空格,像名字里有空格怎么办?就会显示错误

我们可以用一个输入试试:

jerry yiio 8

结果真的报错了:

所以更改一下输入。

正确答案:

import java.util.Scanner;
class Student{
   private String name;
   private  int age;
   
     public String getName(){
         return name;
    }
    public void setName(String name){
        this.name=name;
    }
    public int getAge(){
         return age;
    }
   public void setAge(int age){
       if(age<=6)  {this.age=7;}
           else this.age=age;   
    }
    Student(){
          age=7;
         name="无名";
        System.out.println("无参构造方法");
   }
    
   public  void display(){
        System.out.println("name:"+name+",age:"+age);
   } 
   
    
}
    public class Main{
        public static void main(String args[]){
            Student s1=new Student();
            s1.display();
             Scanner sc=new Scanner(System.in);
            String name=sc.next();
            int age=sc.nextInt();
            s1.setName(name);
            s1.setAge(age);
            s1.display();
        }
    }


原文地址:https://blog.csdn.net/2301_79235626/article/details/142992156

免责声明:本站文章内容转载自网络资源,如本站内容侵犯了原著者的合法权益,可联系本站删除。更多内容请关注自学内容网(zxcms.com)!