使用hasNext()条件停止循环

时间:2011-11-13 00:02:55

标签: java java.util.scanner

(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;
} 

4 个答案:

答案 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)

如果你想退出,放回;或者如果你想进入下一个循环迭代 ,把继续;