java - 我如何找到这个学生数组中所有学生的最高、最低和总平均数
问题描述
我有一个良好的开端,但在试图找到阵列的最低和最高等级时遇到了困难。我还必须找到整个阵列的平均等级。
他们告诉这个网站是获得帮助的最佳场所
所以...如果有人可以帮助我,我将不胜感激
这就是我到目前为止所拥有的
import java.util.Scanner;
public class Grades
{
public static void main(String[]args)
{
Scanner keyboard = new Scanner(System.in);
String studentName;
double studentScore;
double [][]studentTestScores;
double Average ;
char LetterGrade;
double LowestScore;
final int numStudents = 2;
final int numGrades = 3;
Grades2 class1 = new Grades2 (numStudents,numGrades );
studentTestScores = class1.getTestScoresArray();
for( int StudentIndex = 0; StudentIndex < numStudents; StudentIndex++)
{
System.out.println("Enter name of student " + (StudentIndex + 1));
studentName = keyboard.nextLine();
class1.setStudentName( studentName );
for( int studentScoreIndex = 0; studentScoreIndex < numGrades; studentScoreIndex++)
{
System.out.println("Enter test grade " + (studentScoreIndex + 1) + " grade of " + studentName);
studentScore = keyboard.nextDouble();
while( studentScore < 0 || studentScore > 100){
System.out.println("Please enter a valid
score" + (studentScoreIndex + 1) + " for " +
studentName);
studentScore = keyboard.nextDouble();
}
keyboard.nextLine();
class1.setScore(StudentIndex, studentScoreIndex, studentScore );
}
}
for( int StudentIndex = 0; StudentIndex < n
umStudents; StudentIndex++ ){
System.out.print( class1.getStudentName(
StudentIndex ) + " Test scores are ");
Average = class1.AverageTestScore(
studentTestScores[ StudentIndex ] );
LetterGrade = class1.getLetterGrade( Average );
LowestScore = class1.getLowestScore(
studentTestScores[ StudentIndex ] );
for( int studentScoreIndex =
0;studentScoreIndex < numGrades;
studentScoreIndex++){
if( studentScoreIndex != numGrades -1){
System.out.print( studentTestScores[
StudentIndex ][ studentScoreIndex ] + ", " );
} else {
System.out.print( studentTestScores[
StudentIndex ][ studentScoreIndex ] + " " );
}
}
System.out.println("with an average of " +
String.format(" %.2f", Average) + ", letter grade "
+ LetterGrade );
System.out.println("\nLowest grade is " +
LowestScore);
System.out.println();
}
}
}
这是程序的第 2 部分
import java.util.ArrayList;
public class Grades2
{
private ArrayList <String> studentNames = new
ArrayList <String> ();
private char [] LetterGrades = {'A', 'B', 'C' , 'D'
,
'F' };
private double [] [] studentTestScores;
public String getStudentName(int studentIndex){
return studentNames.get(studentIndex);
}
public double AverageTestScore( double []
studentTestScores){
double studentTestScoresTotal = 0;
double studentTestScoresAverage;
for( int studentTestScore = 0; studentTestScore <
studentTestScores.length; studentTestScore++){
studentTestScoresTotal = studentTestScoresTotal
+ studentTestScores[ studentTestScore];
}
studentTestScoresAverage = studentTestScoresTotal
/ studentTestScores.length;
return studentTestScoresAverage;
}
public double getLowestScore(){
double LowestScore = studentTestScores[0] ;
for( int studentTestScore = 0; studentTestScore <
studentTestScores.length; studentTestScore++){
if ( studentTestScores[scoreIndex] <
LowestScore){
LowestScore = studentTestScores[scoreIndex];
}
}
return LowestScore;
}
public char getLetterGrade( double TestScoreAverage
)
{
char LetterGrade = 'Z';
if(TestScoreAverage < 60 ){
LetterGrade = 'F';
} else if ( TestScoreAverage < 70){
LetterGrade = 'D';
} else if ( TestScoreAverage < 80){
LetterGrade = 'C';
} else if ( TestScoreAverage < 90){
LetterGrade = 'B';
} else if ( TestScoreAverage < 100){
LetterGrade = 'A';
}
return LetterGrade;
}
public void setStudentName(String studentName){
studentNames.add(studentName);
}
public void setScore(int studentIndex, int
scoreIndex, double Score){
studentTestScores[ studentIndex ][ scoreIndex ] =
Score;
}
public double [][] getTestScoresArray(){
return studentTestScores;
}
public Grades2( int numStudents, int numGrades){
studentTestScores = new double [ numStudents ][
numGrades ];
}
}
解决方案
您可以使用以下方法简单地找到平均值、最小值和最大值:
public double AverageTestScore(double[] studentTestScores) {
return Arrays.stream(studentTestScores).average().orElse(0);
}
public double getLowestScore(double[] scores) {
return Arrays.stream(scores).min().orElse(0);
}
public double getHighestScore(double[] scores) {
return Arrays.stream(scores).max().orElse(0);
}
推荐阅读
- scala - 使用类型参数与抽象类型实现类型类
- android - 房间迁移 - 如何向现有表添加新的 NON-NULL 和字符串类型列
- arrays - 我们如何对 rust-ndarray 中的数组进行算术运算?
- powerbi - 我们可以用 Power BI 矩阵中的百分比计算度量吗
- android - 无法从“C:\Users\AndroidStudioProjects\Test\gradle\wrapper\gradle-wrapper.properties”加载包装器属性
- python - 尝试遵循这个交互式小部件教程
- scipy - scipy.optimize 中的约束抛出 x0 错误
- c# - gridview 同一单元格上的多个链接按钮 - 单击事件未触发 - c#
- c++ - CMAKE 检测编译器 ABI 失败
- matlab - 如何在转换数据类型之前重新缩放图像数据