LoginSignup
shun03
@shun03

Are you sure you want to delete the question?

Leaving a resolved question undeleted may help others!

Javaの累乗計算

解決したいこと

以下のソースコードで、累乗計算をしたいのですが、
計算が合わないです。
Math.pow()は禁止でfor文でコードを書くことが条件であり、分からない状態となっております。
コードの書き方を教えてください。

発生している問題

11 ^ 7 = 12

該当するソースコード

import com.lupinus_ltd.Calc;

public class kadai4 {


    public static void main(String[]args) {

        int operand1 = Integer.parseInt(args[0]);
        String operator = args[1];
        int operand2 = Integer.parseInt(args[2]);

        Calc c = new Calc();
    try {
        switch(operator) {
        case "+":
            c.add(operand1,operand2);
            break;
        case "-":
            c.sub(operand1,operand2);
            break;
        case "*":
            c.multi(operand1,operand2);
            break;
        case "/":
            c.div(operand1,operand2);
            break;
        case "%":
            c.mod(operand1,operand2);
            break;
        case "^":
            c.pow(operand1,operand2);
            break;
        }

    }catch(NumberFormatException e) {
            System.out.println("入力値が数値ではありません");
        }
    }
}

0

1Answer

Javaで「^」は、排他的論理和(ビットXOR)を意味します。
2進数で各桁を比較し、0・1が異なれば1となるような演算を行うものです。

1011 => 11
0111 => 7
  ↓
1100 => 12

for文で累乗計算する場合は、以下のようになると思います。

int operand1 = 11;
int operand2 = 7;

int result = 1;
// "operand2"の回数分ループする
for (int i = 0; i < operand2; i++){
     result = result*operand1;
}

System.out.println(result);
// 19487171


--追記
「Java 累乗計算」で検索すれば、for文での累乗計算の方法もすぐ出てきました。

プログラミングは自分でコーディングできる力ももちろん必要ですが、自分で調べられる力も重要です。
困ったことがあったときにすぐに人に聞くのではなく自分で調べる癖をつけておくと、今後の成長の度合いも変わってくると思います。
まずは自分で調べてから人に聞くようにしてみてください!

0

Comments

  1. @shun03

    Questioner
    ご回答ありがとうございます。
    試したのですが、いまいちできませんでした。

    ```
    case "^":
    c.pow(operand1,operand2);
    break;
    ```
    上記コードを消して

    ```
    for (int i = 0; i < operand2; i++){
    result = result*operand1;
    }
    ```
    上記コードを入れるということでしょうか。
    また、数値は決まっておらず、あくまでも例として挙げました。
    説明不足で大変申し訳ございません。
  2. 他の質問をみるに、計算している部分はCalcクラスにありますよね?
    そのpowメソッドの中に、for文を記述してみてください。
  3. @shun03

    Questioner
    ありがとうございます。
    なんとかできました。検索をかけたつもりではありましたが、
    まだまだ検索不足でした、大変申し訳ございません。
    今後はもっとしっかりと検索をかけて自分だけで解決できるように努力していきます。
  4. 最初は躓くことも多いと思いますが、頑張ってください!

Your answer might help someone💌