起動パラメータ
public static void main(String[] args) {
if (args.length != 1) {
throw new IllegalArgumentException();
}
int value = Integer.parseInt(args[0]);
execute(value, 8);
}
public static void execute(int value, int baseNumber) {
if (baseNumber < 2 && baseNumber > 9) {
throw new IllegalArgumentException();
}
if (value == baseNumber) {
System.out.print(value / baseNumber);
System.out.print(value % baseNumber);
} else if (value > baseNumber) {
execute(value / baseNumber, baseNumber);
System.out.print(value % baseNumber);
} else {
System.out.print(value);
}
}
これの実行結果ってどうなりますか?
僕はバグになってしまうのですが、
回答だと、
答えは起動パラメータで指定された数値を8進数で表示する
です。
解説)
皆さんバグに惑わされていませんか?
if (baseNumber < 2 && baseNumber > 9) {
throw new IllegalArgumentException();
}
この部分はバグですが、条件には該当する事はないためIllegalArgumentExceptionは発生しません。
第二引数が1以下、10以上の時に正しく動作しませんが、
mainメソッドで第二引数に「8」を渡しているため正常に動作します。
「execute(value, 8);」の部分で何進数で表示させるか指定しています。
2進数から9進数までの表示が可能ですので、数値を変えて実行してみてください。
「execute(value / baseNumber, baseNumber);」この部分は再起処理を使用し、
メソッドの中から同じメソッドを呼び出しています。
とのことです。
本当に合っていますか?