2016-03-20 15 views
0

(5,6,7,8)などのユーザー入力の文字列を受け取り、それを整数のarrayListに変換するプログラムを作成しようとしています。 {5,6,7,8}。私はforループを理解するのに困っている。どんな助けも素晴らしいだろう。ラッパークラスを使用して文字列をarrylistに変換する

String userString = ""; 
ArrayList<Integer> userInts = new ArrayList<Integer>(); 

System.out.println("Enter integers seperated by commas."); 
userString = in.nextLine(); 

for (int i = 0; i < userString.length(); i++) { 
    userInts.add(new Integer(in.nextInt())); 
} 
+0

"ラッパークラス"とはどういう意味ですか? – shmosel

答えて

1

ようになり、あなたのアプローチを使用すると、結果の配列を割り当てる前に、文字列であるどのように多くの桁数を把握する必要がある以外、仕事ができます。

複数の数字の数字を処理する場合は、最初にコンマでString.splitを使用してください。これにより、割り当てる必要のある番号の数がわかります。その後、文字列の配列を通過し、Integer.parseIntメソッドを使用して各番号を解析します。

注:私は意図的にコードを表示していないので、これを独立してコーディングするのは楽しいものです。ドキュメントを読むことによって、この課題を完了するのに十分な知識を持っているようです。

+0

ハハはボス – Harry

1

ラインを見てみましょう:それはそう、これはあなたが何かを保持するカントの配列をインスタンス化int[] userInt = new int[0]を書くことと同じであるものが含まれているdoesntのため、時間userString.length() = 0にこの時点で

String userString = "" 
int[] userInt = new int[userString.length()]; 

また、これは配列リストではありません。あなたのリストは、一桁の数字で構成されている場合のArrayListが

ArrayList<Integer> myList = new ArrayList()<Integer>; 
1

私はinScannerであると仮定しています。

私は停止する条件が表示されません。私はあなたが幸せである限り、これをやり続けたいと思うでしょう。

List<Integer> arr = new ArrayList<Integer>(); 

while(in.hasNext()) 
    arr.add(in.nextInt()); 

そして、あなたは10個の数字を取得することを知っていると言う。..

int count = 10; 
while(count-- > 0) 
    arr.add(in.nextInt()); 
0

は、私は別の入力フォーマットを提案する可能性がありますか?入力の最初の行は整数Nで構成されます。次の行には、N個のスペースで区切られた整数が含まれます。

5 
3 20 602 3 1 

些細で、この入力を受け入れるためのコード、およびあなたが唯一の有効な整数値を読み確保するためにjava.util.Scanner#nextInt()メソッドを使用することができます。

このアプローチには、入力を受け入れるときに入力を検証するという利点があります。これは、Stringを受け入れ、検証して解析する必要がなくなります。 Stringアプローチは、処理する必要がある非常に多くのエッジケースを示します。

関連する問題