• 締切済み

研修生です。

class dentaku{ public static void main(String args[]){ int val1 = 0; int val2 = 0; String ope; int kekka; if (args.length != 3){ System.out.println("引数は3個入力して下さい"); System.exit(0); } try{ val1 = Integer.parseInt(args[0]); val2 = Integer.parseInt(args[2]); }catch(NumberFormatException e){ System.out.println("数値でない値が入力されています"); System.exit(0); } ope = args[1]; String opeStr[] = {"kake", "waru", "tasu", "hiku"}; boolean errFlag = true; for (int i = 0 ; i < 4 ; i++){ if (ope.equals(opeStr[i])){ errFlag = false; } } if (errFlag == true){ System.out.println("演算子は kake waru tasu hiku の4つです"); System.exit(0); } if (ope.equals("kake")){ kekka = val1 * val2; }else if (ope.equals("tasu")){ kekka = val1 + val2; }else if (ope.equals("hiku")){ kekka = val1 - val2; }else{ if (val2 == 0){ System.out.println("0で割ろうとしています。"); System.exit(0); } kekka = val1 / val2; } System.out.println("入力された式は " + val1 + " " + ope + " " + val2 + " です"); System.out.println("計算結果は " + kekka + " です"); } }  上記のプログラムを全行網羅するために、引数のパターンを洗い出して表にしたいのです。 どうすればいいのですか?

みんなの回答

noname#208507
noname#208507
回答No.1

例えば、表の横の行は引数 args[0], args[1], args[2], args[3] と並べて、縦の列に処理の分岐が発生する箇所を並べるというのはいかがでしょうか。 A) if (args.length != 3){ B) val1 = Integer.parseInt(args[0]); C) val2 = Integer.parseInt(args[2]); D) }catch(NumberFormatException e){ E) if (ope.equals(opeStr[i])){ F) if (errFlag == true){ G) if (ope.equals("kake")){ H) }else if (ope.equals("tasu")){ I) }else if (ope.equals("hiku")){ J) }else{ K) if (val2 == 0){ 表のマス目に具体的な引数の値の例を入れればよいでしょう。A~Jの「次の行」が実行されるのは、各引数の値は何か(あるいは値は無い/任意)という引数を調べて。 マス目の通りの引数なら次の行に進む選択肢を、マス目に反する引数なら次の行に進まない選択肢を選ぶことになります。