繁体   English   中英

在Java中看到空行时如何中断while循环?

[英]How to break while loop when see empty line in Java?

编写一个代码,逐行从标准输入中读取学生成绩列表,直到不再有要阅读的行或遇到空行为止。

但是,无论如何我都无法退出循环。 我试图写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);
  }
}

而不是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 : hasNextLine()

要检查空行,可以使用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);
  }
}

暂无
暂无

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM