当在Java中看到空行时如何打破while循环?

时间:2015-10-23 17:52:51

标签: java while-loop

  

编写一个代码,从标准输入逐行读取学生成绩列表,直到找不到更多行或遇到空行为止。

但是,无论如何我都无法退出循环。我试着写 Scanner input = new Scanner(input.hasNext());然后中断,但它无法正常工作

public class NumInput {
  public static void main(String [] args) {
    float min = Float.MAX_VALUE;
    float max = Float.MIN_VALUE;
    float total=0;
    int count=0;
    Scanner input = new Scanner(System.in);
    while (input.hasNext()) {

      float val = input.nextFloat();


      if (val < min) {
          min = val;
      }
      if (val > max) {
         max = val;
      }
      count++; 
      total += val ;
    }
    float average = (float) total / count;
    System.out.println("min: " + min);
    System.out.println("max: " + max);
    System.out.println("The Average value is: " + average);
  }
}

2 个答案:

答案 0 :(得分:2)

如果它始终是while(input.hasNext());类型,请尝试while(input.hasNextFloat());,而不是float

此外,while(input.hasNextFloat());将继续读取用户的输入,直到输入非float值(或非int值)。因此,您可以输入12,最后输入q,然后因为q不是float / int,它会退出循环

解决此问题的更具体方法是执行以下操作:

while(input.hasNextLine()) {
    String command = input.nextLine();
    if(command.equals("")) {
        System.out.println("breaking out of the loop");
        break;
    }
    // rest of the code but make sure to use Float.parseFloat() on the `command`;
}

本文档提供了很好的示例以及对hasNextFloat()hasNextLine()parseFloat()的解释:http://docs.oracle.com/javase/7/docs/api/java/util/Scanner.html

答案 1 :(得分:0)

要检查空行,您可以使用nextLine代替nextFloat,然后与""进行比较,这是正常工作的代码

import java.util.Scanner;

public class NumInput {
  public static void main(String [] args) {
    float min = Float.MAX_VALUE;
    float max = Float.MIN_VALUE;
    float total=0;
    int count=0;
    Scanner input = new Scanner(System.in);
    String str;
    while (input.hasNextLine()) { 

       str = input.nextLine();
       if(str.equals(""))   //Check if it is empty line then break
           break;
      float val = Float.parseFloat(str);  //Convert string to float


      if (val < min) {
          min = val;
      }
      if (val > max) {
         max = val;
      }
      count++; 
      total += val ;
    }
    float average = (float) total / count;
    System.out.println("min: " + min);
    System.out.println("max: " + max);
    System.out.println("The Average value is: " + average);
  }
}