前提・実現したいこと
コマンドライン引数に指定した値を、以下の例のように偶数を削除して、奇数の合計値を表示するプログラムを作成しました。
引数には0~9のみからなる文字列が設定され、入力値の妥当性チェックは不要の前提です。
例)
引数:58161843
結果(コンソールに出力):
入力:58161843
出力:5 1 1 3
合計:10
上記の通り作成したプログラムを拡張for文とswitch文を使用して書き換えたいです。
すぐに聞ける人が身近にいない為、解説をお願いします。
for文とif文で作成したソースコード
java
1public class Main { 2 3 public static void main(String[] args) { 4 5 String num = args[0]; 6 String ret = ""; 7 int sum = 0; 8 9 for (int i = 0; i < num.length(); i++) { 10 11 String str = num.substring(i, i + 1); 12 if (Integer.parseInt(str) % 2 == 0) { 13 ret = ret + " "; 14 } else { 15 ret = ret + str; 16 sum = sum + Integer.parseInt(str); 17 } 18 19 } 20 System.out.println(num); 21 System.out.println(ret); 22 System.out.println(sum); 23 } 24}
試したこと
拡張for文とswitch文に書き換えた結果、ソースを追えなくなってしまい訳が分からなくなってしまいました。
java
1public class Main2 { 2 3 public static void main(String[] args) { 4 5 String num = args[0]; 6 String ret = ""; 7 int sum = 0; 8 9 int i = 0; 10 for (String hoge : args) { 11 i++; 12 String str = num.substring(i, i + 1); 13 switch(Integer.parseInt(str) % 2) { 14 case 0: 15 ret = ret + " "; 16 ret = ret + str; 17 break; 18 19 default: 20 21 sum = sum + Integer.parseInt(hoge); 22 } 23 } 24 System.out.println(num); 25 System.out.println(ret); 26 System.out.println(sum); 27 } 28}
下記が現在のコンソール出力結果です。
入力:58161843
出力: 8
合計:0
あなたの回答
tips
プレビュー