【问题标题】:Need to display the Max and Min Grade from a list of numbers需要从数字列表中显示最大和最小等级
【发布时间】:2020-02-28 16:56:29
【问题描述】:

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

我创建了一个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);
  }
}

我会输入:5066.8573.578.977q。

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

【问题讨论】:

  • input.hasNextDouble() 将返回 true 但在循环内没有读取任何内容,因此它将在下一次迭代中返回 true 并一次又一次地......只要双精度不是已消耗(并且grades 始终为50,因为[循环外]仅被读取一次)

标签: java loops while-loop max min


【解决方案1】:

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

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

如果你想让它自己退出,你需要添加一个中断条件。 例如,您可以在输入一定数量后停止,例如:

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

  // your logic here
}

【讨论】:

    【解决方案2】:

    几个点

    1 .一旦您获得第一个条目,您需要为 Min 和 Max 分配该值。

    2 。应使用循环内的最新输入更新变量等级。

    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();
    
        System.out.println("first entry="+grades);
        minGrade = maxGrade = grades;
    
        while(input.hasNextDouble()) {
            grades = input.nextDouble();
            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);
    }
    

    }

    【讨论】:

      【解决方案3】:
      public class MaxMinGrades{
        public static void main(String[] args){
          double maxGrade = 0.0;
                  double minGrade = 100.0;
                  Scanner input = new Scanner(System.in);
                  System.out.println("Enter as many student grades as you like. Enter a character to stop.");
      
      
                  while(input.hasNextDouble()) {
                  double grades = input.nextDouble();
                    if (grades > maxGrade) {
                      maxGrade = grades;
                    }
                    if (minGrade > grades) {
                      minGrade = grades;
                    }
                  }
                  System.out.println("The highest grade is: " + maxGrade);
                  System.out.println("The lowest grade is: " + minGrade);
        }
      }
      

      这样,while loop 内部就有了中断条件。当某些事情发生变化时,检查boolean 条件。

      【讨论】:

        猜你喜欢
        • 1970-01-01
        • 2012-09-14
        • 2018-06-28
        • 2019-09-20
        • 1970-01-01
        • 2016-11-05
        • 1970-01-01
        • 1970-01-01
        • 2021-01-13
        相关资源
        最近更新 更多