2012-03-13 4 views
2

私はstdinから入力を受け取りました。この入力は複数の数字の行になります。たとえば、変数ラインの有効な値は次のようになります。行の数字を読む

1 2 3 4 5 6 7 8 9 10 

私はそこになりますどのように多くの番号を知っていると私はサイズの配列にこれらの数値を格納しようとしています変数Nにこれを保存しましたN.

String a=""; 
for(int i=0; i<line.length(); i++){ 
    if(line.charAt(i)!=' ') 
     a = a+ line.charAt(i); 
    else{ 
     numbers[x++]=Integer.parseInt(a); 
     a=""; 
    } 
} 
numbers[x]=Integer.parseInt(a); //to store the last number in the array 

もっと効率的なやり方がありますか?

答えて

2
String your_number_string; 
String[] numbers = your_number_string.split(" "); 
0

String.split()を使用して入力を区切ることができます。

Check this.

String input = "1 2 3 4 5 6 7 8 9 10"; 
String[] splits = input.split(" "); 

for(String num : splits){  
    if (num != null && num.trim() != "") { 
     try { 
      numbers[x++] = Integer.parseInt(num); 
     } catch (NumberFormatException e) { 
      e.printStackTrace(); 
     } 
    } 
} 
2

あなたはString#splitを使用することができます。

String[] numbersAsString = line.split(" "); // one space, right? 
Listy<Integer> numbers = new ArrayList<String>(); // lists are better here 
for (String numberAsString:numbersAsString) { 
    try { 
    numbers.add(Integer.parseInt(numberAsString)); 
    } catch (NumberFormatException nfe) { 
    // input was not a number is not added to the list 
    } 
} 
0

それはあなたの文字を連結するStringBuilder#append()を使用する方が効率的だいずれにしても、代わりにa = a+

繰り返し呼び出します