- ベストアンサー
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("引数が多すぎるため累乗の計算ができません。"); } } }
- みんなの回答 (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); } いきなりプログラムを書き始めるより、まずは処理フローを明確にすることが先決です。
その他の回答 (1)
- koko_u_
- ベストアンサー率18% (459/2509)
Java はよくわからんのですが >0乗した場合のプログラムがよく分かりません。 最初に k に num[0] を代入するのではなく、1を代入して、単純に num[1] 回 num[0] を掛け算すれば良いのでは? 結果として、num[1] が 0 なら掛け算はおこなわれず、結果は 1 になると思います。
お礼
回答ありがとうございます。 説明不足で申し訳ありません。 kに1を代入した場合、for分を利用しての0以外の累乗の計算が出来なくなります。 作成したソース自体、正しいものか自信ありません…。 何か良い手はないでしょうか?
お礼
回答ありがとうございました。 思慮の浅いお返事をしてしまいお恥ずかしいです。 おかげさまで解決いたしました。 処理フローの明確、心がけます。 ありがとうございました。