2

「onetwothree」のような単語の簡単なステートメントを読み取り、各単語を配列String []トークンに入れるコードを書いています。スキャナーを使用してステートメントを入力したかったのですが、最初の単語しか読み取れませんでした。mainメソッドを使用してステートメントを入力すると、うまく機能します。私の間違いは何ですか?

ここに2つのコードがあります:

// mainメソッドを使用します:

public class MyLangyage {
    public static void main(String[] args) {
        String statement = "one two three";
        screen(statement);
    }
    public static void screen(String statement) {
        String token[]= statement.split(" ");

        for (int i = 0; i < token.length; i++) {
            System.out.println(token[i]);
        }
    }
}

コンソールでの結果は次のようになります。

一二三

//スキャナーの使用:

import java.util.Scanner;

public class MyLangyage {
    public static void main(String[] args) {
        Scanner scanner = new Scanner(System.in);
        String statement = scanner.next();
        screen(statement);
    }
    public static void screen(String statement) {
        String token[]= statement.split(" ");

        for (int i = 0; i < token.length; i++) {
            System.out.println(token[i]);
        }
    }
}

コンソールで書く場合:

一二三

次にEnterキーを押すと、結果は次のようになります。

1

4

2 に答える 2

7

あなたが使用しscanner.next()ているのは、次に読み取る単語を取得するものです。行全体を読んでから分割して使用する場合scanner.nextLine()

于 2012-04-27T16:48:20.533 に答える
2

入力行全体を分割するか、スキャナーを使用して一度に 1 つのトークンを取得します。両方しないでください。

から複数の単語を取得したい場合は、複数回Scanner使用する必要がありますscanner.next()。実際、単語ごとに 1 回です。

于 2012-04-27T16:46:25.693 に答える