題名の通りなのですが、String配列を整数配列にしたいのですが、することは可能でしょうか?
可能なのであればどうすればいいのか教えていただきたいです。使用言語はjavaです
気になる質問をクリップする
クリップした質問は、後からいつでもMYページで確認できます。
またクリップした質問に回答があった際、通知やメールを受け取ることができます。
バッドをするには、ログインかつ
こちらの条件を満たす必要があります。
回答2件
0
標準機能だけで出来る方法についてご紹介します。
Java7までの場合なら、こうなります。
lang
1// Java7以前 2 3String[] sa = {"1", "33", "-5", "9"}; 4int[] ia = new int[sa.length]; 5for (int i = 0; i < sa.length; i++) { 6 ia[i] = Integer.parseInt(sa[i]); // throws NumberFormatException 7} 8 9// ia => [1, 33, -5, 9]
もし整数以外の文字列がある場合は、その対処をしなければなりません。
次の例をご覧ください。
lang
1// Java7以前 2 3String[] sa = { "1", "33", "-5a", "9" }; 4int[] ia = new int[sa.length]; 5for (int i = 0; i < sa.length; i++) { 6 try { 7 ia[i] = Integer.parseInt(sa[i]); // throws NumberFormatException 8 } catch (NumberFormatException e) { 9 e.printStackTrace(); // -5aのとき、スタックトレースが出力される 10 } 11} 12 13// ia => [1, 33, 0, 9]
文字列が-5a
の順番のとき、catch
節に処理が飛びます。
この例ではスタックトレースを表示して処理をスキップして配列には何もセットしないので、その順番の数値はint
配列のデフォルト値のゼロになります。
Java8では、新しいStream APIを使って、もっと簡単に書けるようになっています。
lang
1// Java8 2 3// import java.util.stream.Stream; 4 5String[] sa = {"1", "33", "-5", "9"}; 6int[] ia = Stream.of(sa).mapToInt(Integer::parseInt).toArray(); 7 8// ia => [1, 33, -5, 9]
こちらの場合も、整数以外の文字列があった場合は、その処理をしなければなりません。
簡潔に書けなくなりますが、このようになります。
lang
1// Java8 2 3// import java.util.stream.Stream; 4 5String[] sa = { "1", "33", "-5a", "9" }; 6int[] ia = Stream.of(sa).mapToInt(x -> { 7 try { 8 return Integer.parseInt(x); 9 } catch (Exception e) { 10 e.printStackTrace(); // -5aのとき、スタックトレースが出力される 11 } 12 return 0; 13}).toArray(); 14 15// ia => [1, 33, 0, 9]
投稿2015/02/18 10:37
総合スコア9394
0
配列を回して1つずつ変換していく感じになると思います。
lang
1private int[] parseInts(String[] sList) { 2 int[] x = new int[sList.length]; 3 for (int i = 0; i < sList.length; i++) { 4 x[i] = Integer.parseInt(sList[i]); 5 } 6 return x; 7} 8private void printParseInts(String[] sList) { 9 for (int i = 0; i < sList.length; i++) { 10 System.out.println(Integer.parseInt(sList[i])); 11 } 12}
Java8であれば以下の様な感じでできます。
lang
1private int[] parseInts(String[] sList) { 2return Arrays.stream(sList) 3 .mapToInt(Integer::parseInt) 4 .toArray(size -> new int[size]); 5}
投稿2015/02/18 10:46
編集2015/02/23 14:14総合スコア3541
あなたの回答
tips
太字
斜体
打ち消し線
見出し
引用テキストの挿入
コードの挿入
リンクの挿入
リストの挿入
番号リストの挿入
表の挿入
水平線の挿入
プレビュー
質問の解決につながる回答をしましょう。 サンプルコードなど、より具体的な説明があると質問者の理解の助けになります。 また、読む側のことを考えた、分かりやすい文章を心がけましょう。
バッドをするには、ログインかつ
こちらの条件を満たす必要があります。