1.先引入两个重要类
import java.util.Arrays;
import java.util.Random;
Random:提供了生成随机数的方法。
2.Step 1
2.1确定n个学生,m门课程。设置上下限以及合格线。
2.2产生随机数
创建一个 new Random,并将其存储在 tempRandom 变量中,以便随后可以使用该对象生成随机数。
使用for循环,遍历n、m,随机生成一个介于上下限的数加上下限后存储在data[i][j]中。
3.Step 2 计算每个学生总分
使用for循环加和每个学生的总分,当遇到某一门成绩低于及格线(data[i][j] < threshold)的学生,使用continue跳过本次循环后面的代码。
continue和break的区别:continue结束当前循环的本次迭代,并立即跳转到下一轮循环的开始处继续执行循环,只是跳过了当前迭代中剩余的代码;break结束整个循环,并退出循环体,循环立即终止。
4.Step 3 找到最高分和最低分
先初始化一个无效值,表示尚未找到**和最差学生。
初始化**成绩为 0,这是最低可能的分数,确保初始情况下任何学生的成绩都能比它高。
初始化最差成绩为 m * upperBound + 1,这是一个不可能达到的分数,确保初始情况下任何学生的成绩都能比它低。
然后使用for循环循环遍历数组,使用continue跳过不及格的学生,找到**最差学生。
需要注意的是注释:即使是同一个学生,也有可能同时是**和最差,因为可能存在多个学生分数相同。所以这两个 if 语句不能用 else if 连接起来,需要独立判断。
deepToString和ToString有什么区别?
deepToString() 方法专用于多维数组转换为字符串。
toString() 方法适用于所有对象,但对于数组来说,它只返回数组的类名、长度和内存地址。
5.Step 4 输出
当初始化的无效值没有被有效值替代,即 tempBestIndex ==进行测验 作业2 java语言基础; -1, tempBestIndex 还等于 -1时,输出没有**学生,所有学生均不及格。否则输出学生序号及成绩。
最差学生同理。
6.完整代码及运行结果
运行结果
1.10名学生3门课,上限65,下限50时,随机生成的两种情况
The data is:
[[55, 52, 64], [53, 52, 50], [60, 50, 52], [50, 51, 59], [59, 64, 62], [53, 63, 55], [60, 58, 53], [54, 51, 60], [59, 58, 54], [64, 56, 57]]
The total scores are:
[0, 0, 0, 0, 0, 0, 0, 0, 0, 0]
Cannot find best student. All students have failed.
Cannot find worst student. All students have failed.
The data is:
[[59, 55, 51], [57, 58, 55], [58, 53, 60], [61, 51, 60], [56, 51, 61], [60, 64, 61], [63, 62, 62], [53, 60, 55], [58, 52, 54], [51, 53, 57]]
The total scores are:
[0, 0, 0, 0, 0, 185, 187, 0, 0, 0]
The best student is No.6with scores: [63, 62, 62]
The worst student is No.5with scores: [60, 64, 61]
2.10名学生3门课,上限100,下限50时,随机生成的一种情况
版权声明:
本文来源网络,所有图片文章版权属于原作者,如有侵权,联系删除。
本文网址:https://www.bianchenghao6.com/h6javajc/20619.html