java - 如何找到该学生数组中所有学生的最高、最低和总平均数

标签 java arrays max average min

我有一个良好的开端,但在寻找数组的最低和最高等级时陷入困境。我还必须找到整个数组的平均等级。

他们告诉这个网站是获得帮助的最佳场所

所以......如果有人可以帮助我,我将不胜感激

这就是我到目前为止所拥有的

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();

  }
}

}

这是该计划的第二部分

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);
}

关于java - 如何找到该学生数组中所有学生的最高、最低和总平均数,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/52511207/

相关文章:

java - 表达式的类型必须是数组类型,但它解析为 ArrayList(试图比较两个数组中的字符串

arrays - 函数中的 Haskell 数组模式

javascript - JS - 在其中一个对象上添加新属性和值

java - 如何确定从 Java 文本文件中读取的最大值和最小值

arrays - 为什么列中最后一个非空单元格的这个 Google 表格公式有效?

java - Google Guice - 类必须有一个(且只有一个)用 @Inject 注释的构造函数或非私有(private)的零参数构造函数

java - JSplitPane 中分隔线移动的动画

java - eclipse 中的模拟器不会运行项目

internet-explorer-6 - 没有javascript的IE6中的最小/最大宽度?

java - Spring AOP 自定义注解