日撸 Java 三百行 (day03 Java基础)

日撸 Java 三百行 (day03 Java基础)今天是 java 基础语法的收尾 以一个综合任务画句号 综合任务一 学生的成绩存放于一个矩阵 其中行表示学生 列表示科目 如 第 0 行表示第 0 个学生的数学 语文 英语成绩 要求 进行学生成绩的随机生成 区间为 50 100 找出成绩最好 最差的同学 但有挂科的同学不参加评比 60 分为及格线

大家好,我是讯享网,很高兴认识大家。

今天是java基础语法的收尾,以一个综合任务画句号。

综合任务一

学生的成绩存放于一个矩阵,其中行表示学生,列表示科目。如:第 0 行表示第 0 个学生的数学、语文、英语成绩。要求:

  1. 进行学生成绩的随机生成, 区间为 [50, 100].
  2. 找出成绩最好、最差的同学。但有挂科的同学不参加评比.(60分为及格线)

过程分析:数据结构选择二维数组,以行号 i 表示不同的学生,列号 j 表示不同的科目

代码:

package com.day03; import java.util.Arrays; import java.util.Random; public class day03 { / * * The entrance of the program. * * @param args Not used now. * */ public static void main(String args[]) { task1(); }// Of main / * * Method unit test. * */ public static void task1() { // Step 1. Generate the data with n students and m courses. // Set these values by yourself. int n = 10; int m = 3; int lowerBound = 50;// 分数下限 int upperBound = 100; // 分数上限 int threshold = 60;// 及格分数 // Here we have to use an object to generate random numbers. Random tempRandom = new Random(); int[][] data = new int[n][m]; for (int i = 0; i < n; i++) { for (int j = 0; j < m; j++) { data[i][j] = lowerBound+ tempRandom.nextInt(upperBound - lowerBound+1); } // Of for j } // Of for i System.out.println("The data is:\r\n" + Arrays.deepToString(data)); // Step 2. Compute the total score of each student. int[] totalScores = new int[n]; for (int i = 0; i < n; i++) { for (int j = 0; j < m; j++) { if (data[i][j]< threshold) { totalScores[i] = 0; break; } // Of if totalScores[i] += data[i][j]; } // Of for j } // Of for i System.out.println("The total scores are:\r\n" + Arrays.toString(totalScores)); // Step 3. Find the best and worst student. // Typical initialization for index: invalid value. 默认查询失败的下标:-1 int tempBestIndex = -1; int tempWorstIndex = -1; // Typical initialization for best and worst values. 初始化最高分:0 最低分: m * upperBound + 1 int tempBestScore = 0; int tempWorstScore = m * upperBound + 1; for (int i = 0; i < n; i++) { // Do not consider failed students. if (totalScores[i] == 0) { continue; } // Of if if (tempBestScore < totalScores[i]) { tempBestScore = totalScores[i]; tempBestIndex = i; } // Of if if (tempWorstScore > totalScores[i]) { tempWorstScore = totalScores[i]; tempWorstIndex = i; } // Of if } // Of for i // Step 4. Output the student number and score. if (tempBestIndex == -1) { System.out.println("Cannot find best student. All students have failed."); } else { System.out.println("The best student is No." + tempBestIndex + " with scores: " + Arrays.toString(data[tempBestIndex])); } // Of if if (tempWorstIndex == -1) { System.out.println("Cannot find worst student. All students have failed."); } else { System.out.println("The worst student is No." + tempWorstIndex + " with scores: " + Arrays.toString(data[tempWorstIndex])); } // Of if }// Of task1 }// Of class day03 

讯享网

 运行截图:


讯享网

 代码分析:

        Arrays类中toString()方法   

         

        Random类中nextInt()方法   

 生成一个0-N之间的随机数,利用语句

讯享网data[i][j] = lowerBound+ tempRandom.nextInt(upperBound - lowerBound+1);

可以构造出50-100之间的随机数,关键在于能否取到边界值。

下面使用while循环检验边界值:

package com.day03; import java.util.Random; / * * The entrance of the program. * * */ public class day03_helper { //maxtest 最大随机次数,超过默认取不到 //lowerBound 下界 //upperBound上界 //target 目标随机值 static int maxtest=1000; public static void test(int lowerBound,int upperBound,int target) { // Here we have to use an object to generate random numbers. Random tempRandom = new Random(); //判断边界能否取到边界值 while(lowerBound + tempRandom.nextInt(upperBound - lowerBound+1)!=target){ maxtest--; if(maxtest==0) { System.out.println("随机失败,无法取到" + target); break; } }//of while if(maxtest!=0) System.out.println("成功取到" + target); maxtest=1000; } // of test public static void main(String args[]) { int lowerBound = 50; int upperBound = 100; test(lowerBound,upperBound,100); test(lowerBound,upperBound,50); test(lowerBound,upperBound,88); test(lowerBound,upperBound,101); test(lowerBound,upperBound,49); }// Of main }//of day03_helper 

运行效果:

 当然此题的边界判断比较简单,可以不必使用程序,有些时候的人脑总会有疏忽,不妨用程序来帮忙。

 

 

小讯
上一篇 2025-03-14 19:38
下一篇 2025-03-07 08:19

相关推荐

版权声明:本文内容由互联网用户自发贡献,该文观点仅代表作者本人。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如发现本站有涉嫌侵权/违法违规的内容,请联系我们,一经查实,本站将立刻删除。
如需转载请保留出处:https://51itzy.com/kjqy/69729.html