目录
前言
仅供学习交流参考,望共同进步。
若有不足,敬请斧正。
一、学生类及测试类
【问题描述】
编写学生类,
变量:包括学号、姓名和三门课程成绩、学生总人数,其中学生总人数为静态数据成员(初始值为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.00stuNo:202121115001
name:zhaoyun
math:87
english:80
java:93
total:260
avg:86.67
After objects creation,number of Student:2进程已结束,退出代码0