试着写一个博客
//导入全部类(包含随机数和Scanner) import java.util.*; //参考学生类 class Student { String studentID;//学号 String studentName;//姓名 int[] scores;//成绩数组 double averagescore; //平均分 double maxscore; //最高分 } //学生成绩类 class Grade { Student[] student; double averageclass;//班级平均分,用于评判新同学成绩水平 int henfan; //定义变量,储存班级中平均分最高的学生并输出 } //主类 public class NewStudent { public static void main(String[] args) { Student newStudent = new Student();//学生记录 Grade grade = new Grade();//成绩记录 grade.student = new Student[35];//一个班级人数 newStudent.scores = new int[4];//四门课的成绩 Random rand = new Random();//生成随机数 int i,j;//全局变量,用于遍历 int index = 0;//设置索引,用于保存最高平均分学生的数据 String yxz; double woc; double oldscore = 0;//原先分数和,此处初始化为0 double p = 0; //创建原先班级的学生成绩表 for (i = 0; i <= 34; i++) { woc = 0; grade.student[i] = new Student(); grade.student[i].scores = new int[4]; //如果学号最后两位从10开始(10-36) if(i>=9) { grade.student[i].studentID = "202072" + (i + 1);//下标加1 } else { //最后两位为01-09时,在1-9前添加字符0 yxz = "0" + (i + 1); grade.student[i].studentID = "202072" + yxz; } //随机生成一位平均得分最高学生的简拼(用三位英文字母代替) char a = (char) (rand.nextInt(26) + 97); char b = (char) (rand.nextInt(26) + 97); char c = (char) (rand.nextInt(26) + 97); grade.student[i].studentName = "" + a + b + c;//均分最高学生姓名输出格式 double q = 0 ;//设置变量用于储存maxscore //遍历更新新生加入前的班级学生表 for (j = 0; j <= 3; j++) { grade.student[i].scores[j] = rand.nextInt(100) + 1; woc = woc + grade.student[i].scores[j]; p = p + grade.student[i].scores[j]; //更新最高分 if (grade.student[i].scores[j] > q) { q = grade.student[i].scores[j]; } } //计算原班级学生的平均分和最高分 grade.student[i].averagescore = woc / 4; grade.student[i].maxscore = q; //如果遍历过程中有学生的成绩总分比原先的成绩总分oldscore要高,则将现有值存入woc中 if (woc > oldscore) { oldscore = woc; index = i;//更新索引 } } //计算班级平均分和最高平均分持有者 grade.averageclass = p / (30 * 4); grade.henfan = index; //用户输入界面 double allscore = 0;//学生个人总分值 double maxsize = 0;//均分最大值 System.out.println("请输入学生姓名: "); newStudent.studentName = new Scanner(System.in).nextLine(); System.out.println("请输入学生学号: "); newStudent.studentID = new Scanner(System.in).nextLine(); System.out.println("请输入四门课的成绩,以空格分隔:"); //scoreinfo:输入的成绩数组 scoresinfo:每两门成绩之间插入的空格 String scoreinfo = new Scanner(System.in).nextLine(); String[] scoresinfo = scoreinfo.split(" ");//输入成绩中以空格为分隔 //循环存入新生成绩 for ( i = 0; i <= 3; i++) { newStudent.scores[i] = Integer.parseInt(scoresinfo[i]); //如果超过最大值,则更新最大值和总分 if (newStudent.scores[i] > maxsize){ maxsize = newStudent.scores[i]; } allscore = allscore + newStudent.scores[i]; //成绩能取的最大值为100,输入时超过100程序直接终止 if (newStudent.scores[i] > 100) { System.out.println("课程成绩不能高于100分!!"); System.exit(0); } } //平均分与最高分 newStudent.averagescore = allscore / 4;//计算平均分 newStudent.maxscore = maxsize;//将最大值赋给max-score //输出新生成绩情况(第一行输出) System.out.println(newStudent.studentName + "(ID:" + newStudent.studentID + ") 平均分:" + newStudent.averagescore + " 最高分" + newStudent.maxscore); //以下为第二行输出 //当新生平均分小于老生最高平均分时 if(allscore / 4 <= oldscore / 4){ maxsize = 0;//将最大值初始化为0 //遍历学生组并存入均分最大值 for (i = 0; i <= 3; i++) { //student[index]用于标记特定学生(每次循环的均分最大值) if (grade.student[index].scores[i] > maxsize) { maxsize = grade.student[index].scores[i];//如果特定值大于均分最大值,则将maxsize重新赋值 } } //输出随机生成的学生中的最优秀值 System.out.println(grade.student[index].studentName + "(ID:" + grade.student[index].studentID + ") 最高平均分:" + grade.student[grade.henfan].averagescore + " 最高分" + grade.student[grade.henfan].maxscore); } //否则新生为最高平均分,新生已经是班上最好的学生了 else { System.out.println(newStudent.studentName + "现在是班上成绩最好的学生了"); } //判断新生平均分是否高于班级平均分 if (newStudent.averagescore > grade.averageclass) { System.out.println(newStudent.studentName + "的平均成绩高于全班的平均分"); } else { System.out.println(newStudent.studentName + "的平均成绩低于全班的平均分"); } } }
初步设计分电脑技术开发和

浙公网安备 33010602011771号