(Scanner Input=new Scanner(System.in))
我的程序中有while
循环Input.hasNext()
条件。
我想在没有Input.nextLine();
的情况下阅读带有扫描仪的行,因为我想在.next()
&行中使用该行中的字符串和整数。 .nextInt()
,如何在读取一行后中断while
循环,或者如何通过输入换行符来打破while循环?
while (Input.hasNext()) {
if (Input.hasNextFloat()) {
Grade=Input.nextFloat();
P.setGrades(Grade);
j=0;k=1;
continue;
}
if (k==1) {
P.getGPA();
P=new Person();
k=0;
}
if (j==1) {
P.setLastName(Input.next());
continue;
}
P.setFirstName(Input.next());
i++;
j=1;
}
答案 0 :(得分:0)
测试您想要的条件并使用break
结束循环。
编辑:
根据您的评论,我会说您不能在循环测试中使用Scanner。它只是跳过换行符作为空白区域并等待其他东西。相反,将System.in包装在BufferedReader中,并使用readLine
获取下一个用户行。如果该行为空(零长度),那么您可以摆脱循环;否则,您可以将该行包装在扫描仪中,以使用Scanner对该行的解析方法。
答案 1 :(得分:0)
如果您只想在1行中读取1行,然后解析该行
String line = Input.nextLine();
Scanner lineScanner = new Scanner(line);//Scanner can also work on a String instead of a InputStream
while(lineScanner .hasNext()){
if(lineScanner .hasNextFloat()){
Grade=lineScanner .nextFloat();
P.setGrades(Grade);
j=0;k=1;
continue;}
if(k==1){
P.getGPA();
P=new Person();
k=0;}
if(j==1){
P.setLastName(lineScanner .next());
continue;}
P.setFirstName(lineScanner .next());
i++;
j=1;
}
答案 2 :(得分:0)
这个怎么样?
boolean b=true;
while (Input.hasNext() && b) {
if (Input.hasNextFloat()) {
Grade=Input.nextFloat();
P.setGrades(Grade);
j=0;k=1;
} else {
String content=Input.next();
if (content.equals("")) {
b=false;
} else {
if (k==1) {
P.getGPA();
P=new Person();
k=0;
}
if (j==1) {
P.setLastName(content);
continue;
}
P.setFirstName(content);
i++;
j=1;
}
}
}
我并不习惯Scanner类,但如果输入换行,我假设next()返回一个空字符串。
答案 3 :(得分:0)
如果你想退出,放回;或者如果你想进入下一个循环迭代 ,把继续;