2012-01-02 34 views
3

文字列から数字のセットをカンマで区切って、ArrayListに入れようとしているプログラムがあります。しかし、私はそれをどうするかについてはあまりよく分かりません。これまでのところ、私がやったことは文字の配列に文字列をオンにしてから使用してint型に文字を変換である:文字列から数字を取り出してarrayListに入れる方法

Character.digit(temp[i], 10) 

この例では、文字列を反復処理ループの中にあります。この場合、"1,2,3,4"としましょう。新しいchar配列の最初の要素をとり、それをintに変換します。

私の問題は、

  • Aである。これを行うには良い方法がなければなりません。
  • B:代わりに2桁または3桁の数字が表示されるとどうなりますか(例:"34,2,3,65,125")。これらは1つの要素である必要がある場合、配列の別々の要素として格納されます。
  • C:数値が負数の場合はどうなり、負数が2〜3桁の場合はどうなりますか?例えば、"-123,45,3,4,-6"

これは任意のString引数であることを意味することに注意してください。

ここには多くの条件があり、それらを解決する方法がわかりません。カンマで区切られた数字ではない文字列に失敗するかのどちらか:

+2

これは宿題ですか?可能であれば、適切なタグを付けてください。 – dasblinkenlight

答えて

2

あなただけ行うことができます:

String input = "-12,23,123123"; 
String[] numbers = input.split(","); 
List<Integer> result = new ArrayList<Integer>(); 
for(String number : numbers){ 
    result.add(Integer.parseInt(number)); 
} 
7

"は、任意の文字列引数、" あなたは選択肢を持っているについて

の使用を検討してくださいタスクを再定義します。ここではプログラミングの本質があります。すべてを定義する必要があります。最も簡単な方法(そして最も安全なのは通常)は、予期せぬことが起こったときにはいつでも失敗することです。 Javaはこの場合あなたのためにそれを行いますので、お楽しみください。

1

最初に入力Stringを分割してString.split()を使用します。次にInteger.parseInt()を試してください。

2

は、セパレータに基づいて、別の文字列で、あなたの文字列を分割するString.split()機能を使用して:あなたはまた、分割したStringTokenizerを使用することができます

String input="-123,45,3,4,-6"; 
    String[] vals=input.split(","); 

    List<Integer> numbers=new ArrayList<Integer>(vals.length); 
    for(String val:vals) { 
     numbers.add(Integer.valueOf(val)); 
    } 
1
String testStr = "123,456,789"; 
String tokens[] = testStr.split(","); 

ArrayList<Integer> numList = new ArrayList<Integer>(); 
for(int i = 0; i < tokens.length; i++) 
{  
    try 
    { 
     Integer num = new Integer(tokens[i]); 
     numList.add(num); 
    } 
    catch(NumberFormatException e) 
    { 
     //handle exception 
    } 
} 
0

を文字列を部分文字列に変換し、Integer.parseIntを使用して整数に変換します。

1
String input="-123,45,3,4,-6, a"; 
String[] vals=input.split(","); 

List<Integer> numbers=new ArrayList<Integer>(vals.length); 
for(String val:vals) { 
    try { 
     int a = Integer.valueOf(val); 
     numbers.add(a); 
    } catch (NumberFormatException e) { 
     // TODO: handle exception 
    } 
} 

このコードを使用してください。それを使うことで、整数でない値があれば避けることができます。

+2

「例外」をキャッチしないでください。ありがとうございました。 – alf

+1

Uの場合、例外をキャッチしないで、Urループは配列リスト全体で反復することはありません。 – Yogee

+0

良いことは、あなたが知っているものだけを捕まえることです。 'NumberFormatException'をキャッチするのはうまく、期待どおりです。 「例外」をキャッチするのは悪い習慣であり、落胆するべきです。 – alf

関連する問題