Javaに指数演算子はありますか?
たとえば、ユーザーが2つの数字を入力するように求められ、3
と2
を入力した場合、正しい答えは9
になります。
import Java.util.Scanner;
public class Exponentiation {
public static double powerOf (double p) {
double pCubed;
pCubed = p*p;
return (pCubed);
}
public static void main (String [] args) {
Scanner in = new Scanner (System.in);
double num = 2.0;
double cube;
System.out.print ("Please put two numbers: ");
num = in.nextInt();
cube = powerOf(num);
System.out.println (cube);
}
}
ユーザー入力でこれを行うには:
public static void getPow(){
Scanner sc = new Scanner(System.in);
System.out.println("Enter first integer: "); // 3
int first = sc.nextInt();
System.out.println("Enter second integer: "); // 2
int second = sc.nextInt();
System.out.println(first + " to the power of " + second + " is " +
(int) Math.pow(first, second)); // outputs 9
演算子はありませんが、メソッドがあります。
Math.pow(2, 3) // 8.0
Math.pow(3, 2) // 9.0
参考までに、よくある間違いは、2 ^ 3
が2の3乗だと仮定することです。そうではない。キャレットはJava(および同様の言語)では有効な演算子ですが、バイナリxorです。
最も簡単な方法は、数学ライブラリを使用することです。
Math.pow(a, b)
を使用すると、結果はa^b
になります
自分でやりたい場合は、forループを使用する必要があります
// Works only for b >= 1
public static double myPow(double a, int b){
double res =1;
for (int i = 0; i < b; i++) {
res *= a;
}
return res;
}
を使用して:
double base = 2;
int exp = 3;
double whatIWantToKnow = myPow(2, 3);
Math.pow(double a, double b)
メソッドがあります。 doubleを返すことに注意してください。(int)Math.pow(double a, double b)
のようなintにキャストする必要があります。
mathクラスのpowメソッドを使用できます。次のコードは、2を3に上げて出力します(8)
System.out.println(Math.pow(2, 3));
誰かが再帰を使用して独自の指数関数を作成したい場合、参照用です。
public static double power(double value, double p) {
if (p <= 0)
return 1;
return value * power(value, p - 1);
}