2014-02-28 9 views
31

Gibt es in Java einen exponentiellen Operator? Wenn ein Benutzer zum Eingeben von zwei Nummern aufgefordert wird und 3 und 2 eingeben, lautet die richtige Antwort 9.Hat Java einen exponentiellen Operator?

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); 
    } 
} 
+11

'p * p' ist' pSquared', nicht 'pCubed'. –

Antwort

19

Um dies zu tun mit Benutzereingabe:

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 
+6

'(double)' ist völlig unnötig, und es gibt '9.0' aus, nicht' 9'. –

+0

@PaulDraper das Beispiel ist aktualisiert – didxga

63

Es gibt keinen Operator, aber es gibt eine Methode.

Math.pow(2, 3) // 8.0 

Math.pow(3, 2) // 9.0 

FYI, ein häufiger Fehler ist 2^3 2 bis 3. Potenz zu übernehmen. Es ist nicht. Das Caret ist ein gültiger Operator in Java (und ähnlichen Sprachen), aber es ist binär xor.

4

Es gibt die Math.pow(double a, double b) Methode. Beachten Sie, dass es ein Double zurückgibt, Sie müssen es in einen Int wie (int)Math.pow(double a, double b) umwandeln.

2

Sie können die Pow-Methode aus der Math-Klasse verwenden. Der folgende Code wird ausgegeben 2 erhöht auf 3 (8)

System.out.println(Math.pow(2, 3)); 
4

Der einfachste Weg ist Math Bibliothek zu verwenden.

Verwenden Math.pow(a, b) und das Ergebnis wird a^b

sein, wenn Sie es selbst tun möchten, müssen Sie for-Schleife verwenden

// 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; 
} 

verwenden:

double base = 2; 
int exp = 3; 
double whatIWantToKnow = myPow(2, 3); 
+0

Wie fordere ich Benutzer auf, zwei Zahlen einzugeben? d. h. 2 3 = 8 – user3362992

+0

In Ihrem Beispiel wird die Basis 3 und der Exponent 2 sein. Ich denke, Sie sollten mit einer inneren Schleife multiplizieren und i-mal iterieren. – Saad

+0

@Saad - wahr, danke :) – libik