首页 > 解决方案 > 需要从数字列表中显示最大和最小等级

问题描述

我需要输入成绩列表并在输入字符时停止代码。然后它将显示最高等级和最低等级。

我创建了一个while loop,但是当我运行代码时,它一直在循环并且不会停止。

public class MaxMinGrades{
  public static void main(String[] args){
    double maxGrade = Double.MAX_VALUE;
    double minGrade = Double.MIN_VALUE;
    Scanner input = new Scanner(System.in);
    System.out.println("Enter as many student grades as you like. Enter a character to stop.");
    double grades = input.nextDouble();

    while(input.hasNextDouble()) {
      if (grades > maxGrade) {
        maxGrade = grades;
      }
      if (grades < minGrade) {
        minGrade = grades;
      }
    }
    System.out.println("The highest grade is: " + maxGrade);
    System.out.println("The lowest grade is: " + minGrade);
  }
}

我会输入:50 66.85 73.5 78.9 77q。

输出将是: 最高等级是:78.9 最低等级是:50.0

标签: javaloopswhile-loopmaxmin

解决方案


while 循环中没有中断条件。扫描仪将继续侦听输入。只有输入非双字符时,循环才会退出。

您实际上也没有在每次迭代中获得下一个输入。您需要input.nextDouble()在循环内调用。

如果您希望它自行退出,则需要添加中断条件。例如,您可以在输入一定数量后停止,例如:

int gradeCount = 0;
while(input.hasNextDouble() && gradeCount < 6) {
  grades = input.nextDouble();
  gradeCount += 1;

  // your logic here
}

推荐阅读