2016-04-25 8 views
0

たとえば、ユーザーは「1 2 3 4」と入力します。これらの4つの数字を抽出して、配列の別々の場所に挿入するにはどうすればよいですか?各数字をスペースで区切って文字列の数字セットとしてユーザーが入力する各数字を取得するにはどうすればよいですか?

私はちょっと初心者なので、私の知識が不足していると言い訳してください。

for (int i = 0; i < students; i++) { 
    scanner.nextLine(); 
    tempScores[i] = scanner.nextLine(); 

    tempScores[i] = tempScores[i] + " "; 
    tempNum = ""; 
    int scoreCount = 0; 

    for (int a = 0; a < tempScores[i].length(); a++) { 
     System.out.println("Scorecount " + scoreCount + " a " + a); 

     if (tempScores[i].charAt(a) != ' ') { 
      tempNum = tempNum + tempScores[i].charAt(a);    
     } else if (tempScores[i].charAt(a) == ' ') { 
      scores[scoreCount] = Integer.valueOf(tempNum); 
      tempNum = ""; 
      scoreCount ++; 
     } 
    } 
+3

['split(" ")'](https://docs.oracle.com/javase/7/docs/api/java/lang/String.html#split%28java.lang.String%29) – Andreas

答えて

1

あなたは\\s+が1つの以上の空白文字にマッチし、正規表現をとるString.split(String)を使用することができます。次に、Integer.parseInt(String)の解析String(s)〜int(s)を使用できます。最後にArrays.toString(int[])を使用してint[]を表示することができます。

String line = "1 2 3 4"; 
String[] tokens = line.split("\\s+"); 
int[] values = new int[tokens.length]; 
for (int i = 0; i < tokens.length; i++) { 
    values[i] = Integer.parseInt(tokens[i]); 
} 
System.out.println(Arrays.toString(values)); 

出力のようなもの

[1, 2, 3, 4] 
+0

数字が2桁以上の場合でもこれは機能しますか? –

+0

@JakeXiaはい。数値が有効な 'int'である限り。 –

0

あなたは数字は、あなたがちょうど下のような文字列に分割()メソッドを使用することができ、個別に解析するスペースで区切られることを非常に確信している場合:

String input = sc.nextLine(); (Use an sc.hasNextLine() check first) 
if (input != null || !input.trim().isEmpty()) { 
    String [] numStrings = input.split(" "); 
    // convert the numbers as String to actually numbers by using 

Integer.parseInt(String num) method. 
} 
関連する問題