2023年民大22级电信java课堂练习第四章

文章描述了一个Java编程任务,要求创建一个学生类(Stu),包含学号、姓名和三门课程的成绩,以及静态的学生总人数。类应有无参和带参构造方法,以及计算总分和平均分的方法。测试类需创建两个学生对象,输出他们的信息和学生总数。样例输入和输出展示了如何使用这些方法。
摘要由CSDN通过智能技术生成

目录

前言

仅供学习交流参考,望共同进步。

若有不足,敬请斧正。


一、学生类及测试类

【问题描述】

编写学生类,

变量:包括学号、姓名和三门课程成绩、学生总人数,其中学生总人数为静态数据成员(初始值为0)

方法:标准方法,无参和带参构造方法 (每调用一次总人数加1),计算每个学生总分方法,String toString()方法(将学生的所有属性信息连接成一个长字符串) 

实例:编写测试类创建2个学生,一个调用无参构造方法创建(学号、姓名初始值为”unknown”,成绩初始值为0),另一个调用带参构造方法创建(数据从键盘输入,先输入数据再创建对象),计算总分并打印学生的所有信息。平均分保留2位小数

要求:

•1.数据成员定义为私有 •2.在创建对象前,调用方法输出学生总人数,创建两个对象后,再输出学生总人数


【输入形式】

一个学生的相关信息

【输出形式】

2个学生的相关信息及学生总数信息

【样例输入】

202121115001 zhaoyun 87 80 93

【样例输出】

Before objects creation,number of Student:0

stuNo:unknown

name:unknown

math:0

english:0

java:0

total:0

avg:0.00

stuNo:202121115001

name:zhaoyun

math:87

english:80

java:93

total:260

avg:86.67

After objects creation,number of Student:2

代码实现:

//Stu.java
package student;

public class Stu {
    //定义属性变量
    private String name = "unknown";
    private String Id = "unknown";
    private int[] score = {0,0,0};
    private float avg = 0;
    private int total = 0;
    private static int cnt =0;
    //构造方法 右键+生成+构造函数+选中Id score即可快速生成
    public Stu(String name ,String id, int[] score) {
        this.name = name;
        Id = id;
        this.score = score;
        cnt++;
        caltotal();
        calavg();
    }
    public Stu() {
        cnt++;
    }

    //自定义方法
    //总分
    public float caltotal(){
        for (float t:
                score
             ) {
            total += t;
        }
        return total;
    }
    //平均分
    public float calavg(){
        avg = (float) (total/3.0);
        return avg;
    }
    public void tostring() {
        System.out.println("stuNo:"+Id);
        System.out.println("name:"+name);
        System.out.println("math:"+score[0]);
        System.out.println("english:"+score[1]);
        System.out.println("java:"+score[2]);
        System.out.println("total:"+total);
        System.out.printf("avg:%.2f\n",avg);

    }


    //标准方法 取值getter 赋值setter


    public static int getCnt(){return cnt;}
}
//TestStu.java
package student;

import java.util.Scanner;

public class TestStu {
    public static void main(String[] args) {
        Scanner sc = new Scanner(System.in);

        System.out.println("Before objects creation,number of Student:"+Stu.getCnt());

        Stu stu1 = new Stu();
        String id = sc.next();
        String name = sc.next();
        int[] score = new int[3];
        for (int i = 0; i < 3; i++) {
            score[i] = sc.nextInt();
        }
        Stu stu2 = new Stu(name,id,score);
        stu1.tostring();
        System.out.println();
        stu2.tostring();

        System.out.println("After objects creation,number of Student:"+Stu.getCnt());

    }
}

输出结果: 

Before objects creation,number of Student:0
202121115001 zhaoyun 87 80 93
stuNo:unknown
name:unknown
math:0
english:0
java:0
total:0
avg:0.00

stuNo:202121115001
name:zhaoyun
math:87
english:80
java:93
total:260
avg:86.67
After objects creation,number of Student:2

进程已结束,退出代码0


评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包

打赏作者

Qiming_Peng

你的鼓励将是我创作的最大动力

¥1 ¥2 ¥4 ¥6 ¥10 ¥20
扫码支付:¥1
获取中
扫码支付

您的余额不足,请更换扫码支付或充值

打赏作者

实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

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

余额充值