2017-04-15 24 views
2

次のJavaコードで何が問題なのか教えてください。whileループを使用してデータを格納するユーザー入力

私はその後、Scannerクラスオブジェクトを介してユーザからの入力を収集しながら、を使用してarrayに保管しようとしていますが、私はbreak条件を指定しない場合、それは無限ループになりますので、私はbreakに思っ入力"q"と同じですが、動作しませんでした。

import java.util.*; 
public class ProjectOne{ 
    public static void main (String []arg){ 
     ArrayList one = new ArrayList(); 
     Scanner input = new Scanner(System.in); 
     System.out.println("Enter"); 
     String x = input.next();  
     while (input.hasNext()){ 
      if (x !="q"){ 
       one.add(input); 
      } 
      if (x == "q") 
      { 
       break; 
      } 
      System.out.println(one); 
     } 
    } 

} 
+0

*次のJavaコード*と間違っているものを:各ライン間の4つの空行があるので読めないですし、コードが字下げされません。プレビューで完璧に見えるまで質問を投稿しないでください。 –

+0

私の更新の回答を見てください。私はそれがあなたが探しているものだと思います。 – strash

答えて

1

あなたは==Stringを比較しません。私はあなたが正しくScannerを使用していないことを考える:.equals()

if (x.equals("q")) 

if (!x.equals("q")){ 

よう注意
を使用してください。あなたは入力を受け取りますが、入力の代わりに xをチェックし続けます。

0

は、文字列の比較のためにJavaでx =="q"
使用.equals機能のような文字列を比較しないでください。 コードをx.equals("q") for x =="q"と置き換えてください。!x.equals("q") for x !="q"

0

Scannerから更新された値を読み取っていません。以下は、書式設定やその他のエラーを修正した後の参照用に更新されたコードです。また、代わりに==記号で、文字列の比較のためにequals()メソッドを使用します -

import java.util.*; 

public class ProjectOne{ 

public static void main (String []arg){ 

    ArrayList one = new ArrayList(); 
    Scanner input = new Scanner(System.in); 
    System.out.println("Enter"); 
    String x = null; 
    while (input.hasNext()) { 
     x = input.next(); 
     if (!x.equals("q")) { 
      one.add(x); 
     } 
     if (x.equals("q")){ 
      break; 
     } 
    } 
     System.out.println(one); 
} 
0

スキャナは、入力する前のすべて、つまり入力した行全体を読み取ります。

私は何が必要だと思う:

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

public class ProjectOne 

{ public static void main (String []arg){ 
    ArrayList one = new ArrayList(); 
    Scanner input = new Scanner(System.in); 
    System.out.println("Enter"); 
    String pattern; 
    String x = input.next(); 
    while (true){ 
     String line = input.next(); 
     if(line.contains("q"))break; 
     else{ 
      x = x + " " + line; 
      } 
    } 
    System.out.println(x); 
} 
関連する問題