[英]How to output empty line when recieving an empty string in while loop in java?
[英]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
值)为止。 因此,您可以输入1
和2
,最后输入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.