Blue J Potenzen ausgeben

3 Antworten

Hier drei verschiedene Möglichkeiten dafür. Wenn du sie nicht über die main-Methode aufrufst, dann kannst du das static entfernen bei den Methoden.

public class Pewpow {

public static void main(String[] args) {
System.out.println("Bibliothek: " + pot(2, 3) + " rekursiv: "+ rekPot(2, 3) + " iterativ: " + itPot(2, 3));}

// mit Bibliotheksmethode
public static int pot(int number, int potenz) {
if(number%2 != 0) {return -1;}
return (int) Math.pow(number, potenz);}

// rekursiv
public static int rekPot(int number, int potenz) {
if(number%2 != 0) {return -1;}
if (potenz == 1) {
return number;}
else {return rekPot(number, potenz - 1) * number;}
}

// iterativ
public static int itPot(int number, int potenz) {
if(number%2 != 0) {return -1;}
int p = number;
for (int i = potenz; i > 1; i--) {
p *= number;
}
return p;}

}

TUrabbIT  17.03.2015, 10:57

Wenn es keine Gerade zahl ist wird -1 zurückgegeben. Kannst du aber nach belieben anpassen.

Bei fragen zu den Methoden, schreib einfach ;)

Du kannst da theoretisch jede (gerade) Zahl zur beliebigen Potenz ausrechnen, aber bei großen Werten kann es länger dauern... Wäre mal interessant welche Methode am langsamsten ist...

Kontrollabfrage ob gerade oder nicht:

if(number%2 != 0) {return -1;}
0
TUrabbIT  17.03.2015, 11:07
@TUrabbIT

Bei höheren Potenzen laufen iterativ und rekursiv iwie auf Fehler. Habe noch nicht die Ursache gefunden.

0
TUrabbIT  17.03.2015, 11:21
@TUrabbIT

Verbesserte Version: (Werte-Bereich von int war zu klein)

Kannst nun auch in der main Methode 2 Zahlen eingeben und die werden dann berechnet. Erst die Zahl, dann die Potenz.

public class Pewpow {

public static void main(String[] args) {

try {

double pot = Double.parseDouble(args[0]);

double num = Double.parseDouble(args[1]);

System.out.println("Bibliothek: " + pot(num, pot));

System.out.println("rekursiv: " + rekPot(num, pot));

System.out.println("iterativ: " + itPot(num, pot));}

catch (NumberFormatException nfe) {

System.out.println("Eingabe-Fehlerhaft. Keine Zahl!");}

catch (NullPointerException npe) {

System.out.println("Eingabe leer. Bitte Zahlen eingeben");}

}

// mit Bibliotheksmethode

public static double pot(double number, double potenz) {

if(number%2 != 0) {

return -1;

}

return Math.pow(number, potenz);

}

// rekursiv

public static double rekPot(double number, double potenz) {

if(number%2 != 0) {return -1;}

if (potenz == 1) {

return number;

} else {

return rekPot(number, potenz - 1) * number;}

}

// iterativ

public static double itPot(double number, double potenz) {

if(number%2 != 0) {return -1;}

double p = number;

for (double i = potenz; i > 1; i--) {

p *= number;

}

return p;

}

}

0

Eine gerade Zahl hat keinen Rest, wenn durch 2 geteilt wird: Sprich Modulo 2

if ( (zahl % 2) == 0) // dann ist sie gerade

Das mit der Potenz verstehe ich gerade nicht, wie das gemeint ist.

Mach mal ein Beispiel dafür.

Onix1025  16.03.2015, 21:24

Ich glaube er meint das er nicht weis wie man eine Potenz aufschreibt. Also ich kenn mich da nicht aus aber vieleicht zahl^potenz oder so

0
CallieCMary 
Fragesteller
 16.03.2015, 21:29

Ja genau ! Danke erstmal das mit der geraden zahl hat mir schon mal geholfen. 

Man soll eine zahl eingeben können und dann als rückgabewert dir potenz erhalzen. Das soll dann aber nur bei geraden zahlen funktionieren....

0
CallieCMary 
Fragesteller
 16.03.2015, 22:26
@BrutalNormal

Achso ja ich merke gerade dass ich mich echt Falsch ausgedrückt habe . Ich meine die Zahl mit sich selbst multiplizieren , sorry

0
BrutalNormal  16.03.2015, 23:23
@CallieCMary

Probiere mal sowas:

public int quadrieren(int zahl){ 
if ( (zahl % 2) == 0){
return zahl*zahl;}
else return -1;
 }
1

Ist Info für euch Pflichtfach? Wenn nein, dann hast du das falsche Pferd gewählt.