数组的运用
-
求某年最好成绩
-
-
求所有年份最好成绩
-
求某门课历年最好成绩
import java.util.Scanner;
public class Example_work01 {
public static void main(String[] args) {
//声明六个变量, 分别代表六门科目的成绩
int chinese = 0;
int math = 1;
int english = 2;
int physics = 3;
int Chemical = 4;
int biology = 5;
int totalScoreCount = 6;
//每门课的名字
String[] course_name = new String[totalScoreCount];
course_name[chinese] = "语文";
course_name[math] = "数学";
course_name[english] = "英语";
course_name[physics] = "物理";
course_name[Chemical] = "化学";
course_name[biology] = "生物";
Scanner in = new Scanner(System.in);
System.out.println("请问要保存几年的成绩? ");
int yearToStores = in.nextInt();
double[][] scores = new double[yearToStores][course_name.length];
//使用二维数组来进行存储数据, 第一个[]为年数 ,第二个[]为科目数量
for (int i=0;i<yearToStores;i++){
for (int j=0;j< course_name.length;j++){
scores[i][j] = 80 + Math.random() * 20;
//为每个科目生成一个随机值分数
System.out.println("第"+ (i+1)+ "年"+course_name[j]+"成绩为:"+scores[i][j]);
}
}
boolean f_num = true;
//创建一个布尔值,为真
while (f_num){
//这里的循环条件就是以f_num为真执行,反之就可以false退出循环
System.out.println("请输入要进行的操作编号");
System.out.println("1:求某年最好成绩\n"+
"2:求某年的平均成绩\n"+
"3:求所有年份最好成绩\n"+
"4:求某门课历年最好成绩");
int oprtId = in.nextInt();
int year = 0;
//创建一个变量用于保存年份
switch (oprtId){
case 1:
//求某一年的最好成绩
System.out.println("请输入要求哪一年的最好成绩");
year = in.nextInt() - 1;
//-1是索引
if (year < 0 || year >= yearToStores){
System.out.println("非法的年份");
break;
}
int bestOfYearScoreId = 0;
for (int i = 1 ;i < scores[year].length;i++){
if (scores[year][bestOfYearScoreId] < scores[year][i]){
bestOfYearScoreId = i;
//进行大小比较,如果比best..大就赋值给这个变量
}
}
System.out.println("第"+(year+1)+"年"+"最好成绩为"+course_name[bestOfYearScoreId]+":"+scores[year][bestOfYearScoreId]);
//输出成绩的名字和成绩的分数
break;
case 2:
double average = 0;
//求某年的平均成绩
System.out.println("想要求哪一年的平均成绩");
year = in.nextInt() - 1;
//-1是索引
if (year < 0 || year >= yearToStores){
System.out.println("非法的年份");
break;
}
double totalScore = 0 ;
for (int i = 0 ;i < scores[year].length;i++){
totalScore += scores[year][i];
}
System.out.println("第"+(year+1)+"年总分:"+totalScore);
System.out.println("第"+(year+1)+"年"+"平均成绩为:"+":"+(totalScore/ course_name.length));
break;
case 3:
//求所有年份最好成绩
int bestOfYearScore = 0;
year = 0;
for (int i = 0 ;i < scores.length;i++){
for (int j = 0 ;j < scores[i].length;j++){
if (scores[year][bestOfYearScore] < scores[i][j]){
year = i;
bestOfYearScore = j;
//通过两次的for循环遍历,使得循环遍历全部数组的内容,之后判断对应的年份分数,如果
//该年份的分数要高于设置的分数的话,就给其直接赋值
}
}
}
System.out.println("所有年份的最好成绩为:"+scores[year][bestOfYearScore]+" 科目为:"+course_name[bestOfYearScore]+" 第"+year+1+"年");
//输出成绩的名字和成绩的分数
break;
case 4:
//求指定课的所有年份最高成绩
System.out.println("想要求哪一门课的历年最好的成绩");
int course = in.nextInt() - 1 ;
for (int i = 0 ;i < scores.length;i++){
if (scores[year][course] < scores[i][course]){
year = i;
}
}
System.out.println(course_name[course]+"课程的最高的分数为:"+scores[year][course]);
break;
default:
System.out.println("输入的值不符合规范,退出选择界面!");
f_num = false;
}
}
}
}

浙公网安备 33010602011771号