6

ユーザーからスペースで区切られた整数の行を読み取り、値を配列に配置するという正しい開始を取得できないため、プロジェクトで問題が発生しています。

    System.out.println("Enter the elements separated by spaces: ");
    String input = sc.next();
    StringTokenizer strToken = new StringTokenizer(input);
    int count = strToken.countTokens();
    //Reads in the numbers to the array
    System.out.println("Count: " + count);
    int[] arr = new int[count];

    for(int x = 0;x < count;x++){
        arr[x] = Integer.parseInt((String)strToken.nextElement());
    }

これは私が持っているもので、カウントが初期化されると何らかの理由で1に設定されるため、配列の最初の要素のみを読み取るようです。

誰でも私を助けることができますか?これを別の方法で行う方がよいでしょうか?

4

5 に答える 5

14

コードを機能させるために必要な変更はほんのわずかです。エラーは次の行にあります。

String input = sc.next();

質問の下の私のコメントで指摘されているように、次の入力トークンのみを読み取ります。ドキュメントを参照してください。

で置き換えると

String input = sc.nextLine();

nextLine()入力行全体を消費するため、やりたいことを実行します。

于 2013-01-15T08:37:43.863 に答える
4
String integers = "54 65 74";
List<Integer> list = new ArrayList<Integer>();
for (String s : integers.split("\\s"))  
{  
   list.add(Integer.parseInt(s));  
}
list.toArray();
于 2013-01-15T08:28:34.117 に答える
2

これは同じことをするためのより簡単な方法でしょう-

System.out.println("Enter the elements seperated by spaces: ");
String input = sc.nextLine();
String[] split = input.split("\\s+");
int[] desiredOP = new int[split.length];
int i=0;
for (String string : split) {
    desiredOP[i++] = Integer.parseInt(string);
}
于 2013-01-15T08:30:31.650 に答える
2

同じことを達成する別の方法があります。しかし、あなたのコードを試してみると、正しく動作しているようです。

StringTokenizer strToken = new StringTokenizer("a b c");
int count = strToken.countTokens();
System.out.println(count);

count は 3 として出力されます。デフォルトの区切り記号は " " です。

入力フィールドをどのように取得しているのかわかりません。完全な入力を文字列形式で返していない可能性があります。

入力を読み取るために java.util.Scanner を使用していると思います

スキャナーからの Java ドキュメント。

Scanner は、デフォルトで空白に一致する区切り文字パターンを使用して、入力をトークンに分割します。結果のトークンは、さまざまな next メソッドを使用して、さまざまな型の値に変換できます。

したがって、入力は1つの整数のみを返し、残りは無人のままです

これを読む。Scanner#next() 、代わりにScanner#nextLine()を使用する必要があります

于 2013-01-15T08:30:20.833 に答える
0
import java.io.BufferedReader;
import java.io.InputStreamReader;
import java.util.StringTokenizer;
BufferedReader br = new BufferedReader(new InputStreamReader(System.in));
.
.
.
StringTokenizer st = new StringTokenizer(br.readLine());
int K = Integer.parseInt(st.nextToken());
int N= Integer.parseInt(st.nextToken());
于 2015-08-12T00:12:09.553 に答える