2

ユーザー入力を1行内の個々の単語として印刷すると、その行のすべての単語が印刷されます。

System.out.println(userInput.next());

ただし、個々の単語をArrayListに追加すると、ランダムな単語が返されるように見えます。

 al.add(userInput.next());

誰かが私に何が起こっているのか説明してもらえますか?

ありがとう。

これはコードの完全なコピーです:

import java.util.*;


public class Kwic {
    public static void main(String args[]){

        Scanner userInput = new Scanner(System.in);
        ArrayList<String> al = new ArrayList<String>();


        while(userInput.hasNext()){
            al.add(userInput.next());
            System.out.println(userInput.next());
        }


    }
}
4

6 に答える 6

9
while(userInput.hasNext()){
    al.add(userInput.next());   //Adding userInput call to ArrayList
    System.out.println(userInput.next());  //Printing another userInput call
}

ArrayListに格納されている値を出力するのではなく、実際にはuserInput.next()への別の呼び出しを出力します。

リビジョン

@シェルドンこれは私のために働いています。

public static void main(String[] args) {
    Scanner userInput = new Scanner(System.in);
    ArrayList<String> al = new ArrayList<String>();
    while(userInput.hasNext()){
        al.add(userInput.next());
        System.out.println(al);  //LINE CHANGED FROM YOUR QUESTION
    }

}

入力を使用してコードをテストしました 1 2 3 4 5 6 7 8 9 0

次に、Enterキーを押して取得しました。

2 4 6 8 0

userInput.next()は、ArrayListに追加されたものと、System.out.printlnによってキャプチャされたものを交互に使用します。

于 2012-09-23T18:12:13.590 に答える
5

スキャナーからの次のトークンをnext()消費するためです。したがって、次の場合:

        al.add(userInput.next());
        System.out.println(userInput.next());

実際には、スキャナーから2 つのトークンを消費しています。1 つは に追加されArrayListもう 1 つは に出力されSystem.outます。考えられる解決策は、トークンをローカル変数に保存し、それを配列に追加して出力することです。

    while (userInput.hasNext()) {
        String token = userInput.next();
        al.add(token);
        System.out.println(token);
    }
于 2012-09-23T18:15:18.563 に答える
2

私はそれをこのように書きます:

import java.util.*;


public class Kwic {
    public static void main(String args[]){

        Scanner userInput = new Scanner(System.in);
        List<String> al = new ArrayList<String>();


        while(userInput.hasNext()){
                al.add(userInput.next());
        }
    System.out.println(al);

    }
}
于 2012-09-23T18:13:38.430 に答える
1

ArrayListすべての値を最初の値に格納してから、それら印刷すると、より有益になります。現在行っているのは、への別の呼び出しを出力することですuserInput.next()。これは、存在する場合と存在しない場合があります。

while(userInput.hasNext()){
    al.add(userInput.next());
}

for(String s : al) {
    System.out.println(s);
}
于 2012-09-23T18:14:00.890 に答える
0
al.add(userInput.next());   //Adding an Item call to ArrayList

System.out.println(userInput.next()); //Printing the next userInput with a call**

これを試して、ArrayListの値を出力してください

for(String s : al){

     System.out.println(s);

 }
于 2012-09-23T18:15:22.003 に答える
0

行内のすべての単語を出力していないだけでなく、すべての単語をArrayList. コード化した方法により、すべての代替単語が に追加され、代替単語がArrayList出力されます。

于 2012-09-23T18:19:43.877 に答える