2017-11-24 6 views
-2

スキャナが停止していないように見えますが、私がしようとしているのは、ユーザからの入力を受け取り、私の配列リストに私の情報が追加のスペースで保存されているので、私の配列リストにスペースを追加しているので、私はテキストを入力するスペースを追加しています。私がこれまでにしてきたことは止まらない。スキャナからの入力に苦労する

Scanner scan = new Scanner(System.in); 
while (scan.hasNextLine()){ 

    String line = scan.toString(); 
    InPlayerNames.add(line+" "); 

    if (line.toString().equals("done")) { 
     break; 
    } 
} 
+3

行はscan.toString()であってはなりません。 scan.nextLine()(System.inからの次の入力)を読み込む必要があります。 – Steven

+1

'line.toString()'を使う必要はありません。 'line'だけで十分です。 –

+0

スキャナクラスの使い方を完全に説明するチュートリアルがたくさんあります。それらを読むか、少なくとも使用するクラスのjavadocを読んでください。 – GhostCat

答えて

1

scan.toString()は、メモリにスキャン即ち復帰位置のテキスト表現を返しています。

scan.nextLine()をscan.toString()の代わりに使用すると、「終了」が表示されなくなります。

4

scan.toString()を使用してください。scan.nextLine()を使用してください。

スキャナは、そのままwhileループに張り付いています。 scantoString()を呼び出すと、scanオブジェクトのテキスト表現が得られます。

0

ループはスキャナが次の行(良い)を持っていることを確認している間に、しかし、あなたはACTAULLYその次の行に行を設定していないときはね。 文字列= scan.nextLineとします。現在のところ、ライン・トゥ・スキャンのLOCATIONをメモリ内にのみ設定しています。したがって、if文では、行は決して "done"と同じではありません。 toString()メソッドは、それが呼ばれるオブジェクトのテキスト表現を返すために使用されているので

0

このコードは完全にうまく動作します。

package TestPrograms; 

import java.util.ArrayList; 
import java.util.Scanner; 

public class ScannerTest { 

    public static void main(String[] args) { 

     Scanner scan = new Scanner(System.in); 
     System.out.println("Enter the names:"); 
     ArrayList<String> playernames = new ArrayList<String>(); 
     while (scan.hasNextLine()){ 

      String line = scan.nextLine(); 

      playernames.add(line+" "); 

      if (line.equals("done")||(line.equals("Done"))) { 
       break; 
      } 

     } 
     System.out.println("Entered names are : "); 
     for(String name:playernames) { 
      System.out.println(name); 

     } 


    } 

} 

scan.toString()ではなく、入力を取得するにはscan.nextLine()を使用する必要があります。