プロが教えるわが家の防犯対策術!

質問させてください。
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("引数が多すぎるため累乗の計算ができません。");
}
}
}

A 回答 (2件)

Java はよくわからんのですが



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

結果として、num[1] が 0 なら掛け算はおこなわれず、結果は 1 になると思います。
    • good
    • 0
この回答へのお礼

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

お礼日時:2007/06/17 22:50

前者の方は以下のようなことを仰っているのです。



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);

}

いきなりプログラムを書き始めるより、まずは処理フローを明確にすることが先決です。
    • good
    • 0
この回答へのお礼

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

お礼日時:2007/06/19 23:01

お探しのQ&Aが見つからない時は、教えて!gooで質問しましょう!