• ベストアンサー

for文を使った累乗の計算方法について

質問させてください。 for文を使った累乗の計算プログラムを作っています。 数値はコマンドライン引数から取得し、0番目の数字を i番目の数字分累乗するというものです。 ソースを途中まで作成したのですが、0乗した場合のプログラムが よく分かりません。どなたか教えていただけないでしょうか? public class Mondai { public static void main(String[] args) { //変数の初期化 int k = 0; if ( 2 <= args.length && args.length < 3) { //コマンドライン引数の数だけ配列を用意する int[] num = new int[args.length]; //0,1番目のコマンドライン引数を整数に変換してnumに代入する num[0] = Integer.parseInt(args[0]); k = num[0]; k *= k; num[1] = Integer.parseInt(args[1]); //num[1]の掛け算をnum[1]回繰り返す for (int i = 0; i < num[1] -2; i++) { k *= num[0]; } System.out.println("\"" + num[0] +"の" + num[1] + "乗は"+ k + "\""); if(num[1] == 0) { System.out.println("\"" + num[0] +"の" + num[1] + "乗は1\""); } //args.length <= 1の条件の時 } else if(args.length <= 1) { System.out.println("引数が足りないため累乗の計算ができません。"); //指定された条件以外の時 } else { System.out.println("引数が多すぎるため累乗の計算ができません。"); } } }

質問者が選んだベストアンサー

  • ベストアンサー
  • momozange
  • ベストアンサー率67% (21/31)
回答No.2

前者の方は以下のようなことを仰っているのです。 public static void main(String[] args) { int original = Integer.parseInt(args[0]); int volume = Integer.parseInt(args[1]); int result = 1; for (int i = 0; i < volume; i++) { result *= original; } System.out.println(original + "の" + volume + "乗は" + result); } いきなりプログラムを書き始めるより、まずは処理フローを明確にすることが先決です。

t_kane_apr
質問者

お礼

回答ありがとうございました。 思慮の浅いお返事をしてしまいお恥ずかしいです。 おかげさまで解決いたしました。 処理フローの明確、心がけます。 ありがとうございました。

その他の回答 (1)

  • koko_u_
  • ベストアンサー率18% (459/2509)
回答No.1

Java はよくわからんのですが >0乗した場合のプログラムがよく分かりません。 最初に k に num[0] を代入するのではなく、1を代入して、単純に num[1] 回 num[0] を掛け算すれば良いのでは? 結果として、num[1] が 0 なら掛け算はおこなわれず、結果は 1 になると思います。

t_kane_apr
質問者

お礼

回答ありがとうございます。 説明不足で申し訳ありません。 kに1を代入した場合、for分を利用しての0以外の累乗の計算が出来なくなります。 作成したソース自体、正しいものか自信ありません…。 何か良い手はないでしょうか?