数组的运用

一个程序搞定成绩的各种处理需求

  • 求某年最好成绩

  • 求某年的平均成绩

  • 求所有年份最好成绩

  • 求某门课历年最好成绩

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;

                  }

                  }

          }

      }
posted @ 2022-04-16 16:27  comia  阅读(24)  评论(0)    收藏  举报