7-3 设计一个学生类

定义一个学生类Student,有姓名(name)、成绩(score)两个私有属性,提供一个无参数的构造方法、一个带参数的构造方法,以及四个公有方法getName()、setName()、getScore()、setScore ()分别用于获取和设置姓名、成绩属性。

在测试类Main中,先使用学生类的无参数的构造方法创建一个学生类对象stu1,然后接收键盘上输入的数据,分别作为setName( )和setScore( )的参数,从而当作学生stu1的姓名和成绩;再使用学生类的带参数的构造方法创建一个学生类对象stu2,接收键盘上输入的数据作为构造方法的两个参数,从而当作学生stu2的姓名和成绩。

输入格式:

第一行输入一个姓名(例如:张三)、成绩(例如:85.5),分别作为setName( )和setScore( )的参数,从而当作学生stu1的姓名和成绩。
第二行再输入一个姓名(例如:李四)、成绩(例如:92),作为构造方法的两个参数,从而当作学生stu2的姓名和成绩。
具体格式请看输入样例。

输出格式:

通过调用stu1和stu2的getName( )、getScore( )方法,获取到学生对象的姓名和成绩,并将其输出。
具体格式请看输出样例。

输入样例:

在这里给出一组输入,每一行中间用英文空格来间隔。例如:

张三 85.5
李四 92

输出样例:

在这里给出相应的输出,除了姓名可能为中文,其他均为英文格式。例如:

stu1: name=张三,score=85.5
stu2: name=李四,score=92.0

题解图下

import java.util.Scanner;

// 定义学生类 Student
class Student {
    private String name;
    private double score;

    public Student() {
    }

    public Student(String name, double score) {
        this.name = name;
        this.score = score;
    }
    public String getName() {
        return name;
    }
    public void setName(String name) {
        this.name = name;
    }
    public double getScore() {
        return score;
    }

    public void setScore(double score) {
        this.score = score;
    }
    public  void show()
    {
        System.out.println("stu1: name="+this.name+",score="+this.score);
    }
}
class Student2 {
    private String name;
    private double score;

    public Student2() {
    }

    public Student2(String name, double score) {
        this.name = name;
        this.score = score;
    }
    public String getName() {
        return name;
    }
    public void setName(String name) {
        this.name = name;
    }
    public double getScore() {
        return score;
    }

    public void setScore(double score) {
        this.score = score;
    }
    public  void show()
    {
        System.out.println("stu2: name="+this.name+",score="+this.score);
    }
}
// 测试类 Main
public class Main {
    public static void main(String[] args) {
        Scanner scanner = new Scanner(System.in);
        // 使用无参数的构造方法创建 stu1 对象
        Student stu1 = new Student();
//        // 接收键盘输入的数据作为 stu1 的姓名和成绩
       String input1 = scanner.nextLine();
        String[] parts1 = input1.split(" ");
        stu1.setName(parts1[0]);
        stu1.setScore(Double.valueOf(parts1[1])); // 使用 Double.valueOf
       // 使用带参数的构造方法创建 stu2 对象
        String input2 = scanner.nextLine();
       String[] parts2 = input2.split(" ");
        Student stu2 = new Student(parts2[0], Double.valueOf(parts2[1])); // 使用 Double.valueOf
//        // 输出 stu1 和 stu2 的姓名和成绩
        System.out.printf("stu1: name=%s,score=%.1f%n", stu1.getName(), stu1.getScore());
        System.out.printf("stu2: name=%s,score=%.1f%n", stu2.getName(), stu2.getScore());

    }
}

 

  • 4
    点赞
  • 4
    收藏
    觉得还不错? 一键收藏
  • 1
    评论
### 回答1: 学生类应该包含以下属性: 1. 姓名:name 2. 年龄:age 3. 性别:gender 4. 学号:id 5. 成绩:score 学生类应该包含以下方法: 1. 构造方法:初始化学生的姓名、年龄、性别、学号和成绩。 2. 获取姓名:getName(),返回学生的姓名。 3. 获取年龄:getAge(),返回学生的年龄。 4. 获取性别:getGender(),返回学生的性别。 5. 获取学号:getId(),返回学生的学号。 6. 获取成绩:getScore(),返回学生的成绩。 7. 设置姓名:setName(String name),设置学生的姓名。 8. 设置年龄:setAge(int age),设置学生的年龄。 9. 设置性别:setGender(String gender),设置学生的性别。 10. 设置学号:setId(String id),设置学生的学号。 11. 设置成绩:setScore(double score),设置学生的成绩。 ### 回答2: 1. 学生类包括学生的姓名、学号、性别、年龄、班级、考试成绩等属性。 设计一个学生类时,需要考虑学生的基本信息和学业成绩等方面,来构建一个完整的学生信息体系。学生类的属性包括学生的姓名、学号、性别、年龄、班级、考试成绩等。其中,学生的姓名、学号、性别、年龄、班级这些基本信息应该是必须的,因为这些是区分不同学生的重要标识。而考试成绩是学生的一个重要评估指标,也是学校和老师关注的重点,应该加入学生类的属性中。 2. 学生类需要提供可以设置和获取学生信息的方法。 为了让学生类的使用更加方便,应该提供一些设置和获取学生信息的方法。比如,名字应该有一个set和get方法分别用来设置和获取学生的名字,其它属性也同理。实现这些方法可以通过使用私有变量加上公有方法的方式,或者直接在类中定义公有变量。此外,可以在类中定义一些辅助性的方法,如输出学生基本信息、输出学业成绩等,以提高类的可用性。 3. 学生类可以实现对比较器接口,按照学生考试成绩排序。 学生类不仅需要保存学生信息,还可以实现接口,例如对比较器接口,以支持按照学生考试成绩排序等操作。这可以使用java.util包中提供的Comparator类来实现,通过实现这个接口中的compare方法,可以比较两个学生的成绩大小,并在排序时按照成绩大小来进行排序。这样就可以方便地对学生进行全校范围内的成绩排序和排名。 4. 学生类应该是一个可继承的基类。 学生类可以作为其他类的父类,实现多态的效果,可以提高类的灵活性和可复用性。比如,可以将学生类作为本科生、研究生、博士生等不同类型学生的父类,来实现这些不同类型学生类的继承。这样,这些不同类型的学生类就可以共享学生类的一些公共方法和属性,同时也可以添加一些各自特定的方法和属性。这种方式可以有效地避免程序重复和无效的代码,从而提高了程序的可维护性和可扩展性。 总之,设计学生类必须考虑学生的基本信息和学业成绩等方面,通过提供设置和获取学生信息的方法、实现对比较器接口等方式,来实现类的灵活性和多样性,进而提高类的可用性和代码的重用性。 ### 回答3: 学生类是面向对象编程中的基础类之一,在设计学生类时需要考虑学生的属性和行为,并结合实际情况加以具体实现。 首先需要考虑的是学生类的属性。一个学生应该至少有以下属性: 1. 姓名:代表学生的姓名,应该使用字符串类型存储。 2. 学号:代表学生的学号,应该使用字符串类型存储。 3. 年龄:代表学生的年龄,应该使用整型数值类型存储。 4. 性别:代表学生的性别,应该使用字符串类型存储。 5. 成绩:代表学生的成绩,应该使用浮点数类型存储。 以上属性可以在学生类中定义对应的成员变量。可以使用私有变量来实现对外隐藏属性,并提供公有接口方法来对属性进行读写操作。 接下来考虑学生类的行为。在这里,我们主要考虑学生的学习和考试行为。具体而言,学生类应该至少有以下方法: 1. study():代表学生的学习行为,该方法可以根据输入的参数来表示不同的学科,比如 study("math") 表示学生学习数学。 2. exam():代表学生的考试行为,该方法可以根据输入的参数来表示不同的考试科目和考试成绩,比如 exam("math", 80) 表示学生考了数学,得到了80分的成绩。 3. getRank():代表学生的排名行为,该方法可以根据输入的参数来按照指定的排序规则进行排序,并返回学生在这个规则下的排名。 以上方法可以在学生类中定义对应的成员函数,可以使用公有函数来体现对外提供的行为接口。 最后,需要考虑学生类的构造函数和析构函数。在这里,我们可以定义一个默认构造函数和一个带参数的构造函数,用于初始化学生对象的各个属性。需要注意的是,在析构函数中,需要释放学生对象所占用的内存空间。 综上所述,学生类应该包含以上属性和方法,以及构造函数和析构函数。这样可以实现学生类的基本功能,并能够方便地对学生对象进行实例化、属性修改、行为调用和内存管理等操作。

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论 1
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值