hasNext()条件でループを停止する

(Scanner Input=new Scanner(System.in))

I have a while loop in my program with Input.hasNext() condition. I want to read a line with scanner without Input.nextLine(); because i want to use the strings and integers in that line with .next() & .nextInt() ,how can i break the while loop after reading one line, or how can I break the while loop with entering newline character?

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

4 答え

これはどう?

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クラスに慣れていませんが、newlineが入力された場合、next()は空文字列を返します。

0
追加された

しばらくして終了したい場合は、returnを入力します。あなたがサイクルの次の繰り返しに行きたい場合は 、続ける。

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;
} 
0
追加された
ねえ、ありがとう、それは働いた
追加された 著者 wilson daffing,

必要な条件をテストし、 break を使用してループを終了します。

編集:

あなたのコメントに基づいて、私はあなたがループテストでスキャナを使用することはできないと言っています。改行を空白としてスキップし、他のものを待つだけです。代わりに、System.inをBufferedReaderでラップし、 readLine を使用して次のユーザーラインを取得します。行が空(長さゼロ)の場合は、ループから抜け出すことができます。そうしないと、スキャナの行を折り返して、その行に対してスキャナの解析メソッドを使用することができます。

0
追加された
@wilson - 私の編集を参照してください。
追加された 著者 Ted Hopp,
そのユーザーまで、私は使用することができませんbreak.i偽の入力方法をしたいInput.hasNext()改行文字を入力して条件
追加された 著者 wilson daffing,