Erweiterter Taschenrechner

sjsf

Grünschnabel
Hallo zusammen,

vielleicht kann mir hier jemand helfen. Ich versuche gerade Java zu lernen und komme bei folgender Aufgabe nicht weiter.

Erweitern Sie den Taschenrechner (Siehe Code), so dass er Potenzen berechnen kann.
Der erste eingelesene Wert soll dabei die Basis bilden und der zweite eingelesene Wert den Exponenten. Wenn Sie die Zahlen 2 und 3 eingelesen haben, soll der Taschenrechner also 2hoch3 rechnen.
Erstellen Sie für das Berechnen der Potenz eine eigene Methode. Die Potenz soll durch einen Schleife errechnet werden.

Ich stehe gerade wirklich wie vor einer Wand. Kann mir jemand helfen?

Vielen Dank schonmal im Voraus.

Code:
//Festlegen der Variablen
       
        int zahl1, zahl2;
        String eingabe;
       
        //Einlesen der Werte
       
        zahl1 = Integer.parseInt(JOptionPane.showInputDialog("Bitte geben Sie die erste Zahl ein:"));
        zahl2 = Integer.parseInt(JOptionPane.showInputDialog("Bitte geben Sie die zweite Zahl ein:"));
       
        //Einlesen der Rechenoperation

        eingabe = JOptionPane.showInputDialog("Geben Sie die gewünschte Operation ein (+, -, *, /):");
       
        //Auswertung
       
        switch(eingabe)
        {
        //Case +
        case "+":
              System.out.println("Das Ergebnis = " + (zahl1 + zahl2));
              break;
           
        //Case -
          case "-":
              System.out.println("Das Ergebnis = " + (zahl1 - zahl2));
              break;
             
             
        //Case *     
          case "*":
              System.out.println("Das Ergebnis = " + (zahl1 * zahl2));
              break;
             
        //Case /     
          case "/":
              System.out.println("Das Ergebnis = " + (zahl1 / zahl2));
              break;
             
        }
       
       
       
    }

}
 

sheel

I love Asm
Hi

Du musst doch nur ein Stück Code kopieren und minimal anpassen.
Was genau ist daran das Problem?

Zuerst schreibst du hoch oder ^ oder so irgendwas bei der Textmeldung dazu, was der Benutzer eingeben darf.

Dann fügst du nach
Java:
case "/":
    System.out.println("Das Ergebnis = " + (zahl1 / zahl2));
    break;
noch einmal einen ähnlichen Block ein, mit case "^" und einem Aufruf von meinePotenzMethode(zahl1, zahl2) statt der Division.

meinePotenzMethode muss dann auch noch gemacht werden und könnte vom Gerüst her zB. so ausschauen:
Java:
public long meinePotenzMethode(int z1, int z2)
{
    long ergebnis;
    // hier eine schleife...
    return ergebnis;
}
 

sjsf

Grünschnabel
Ich glaube ich stehe total auf dem Schlauch... Ich bin ganz am Anfang solltest Du wissen :D
Also, ich habe jetzt einen weiteren case hinzugefügt. Diesen entsprechend angepasst und auch in der Textmeldung abgeändert.

Mit dem Aufruf von meinePotenzMethode(zahl1, zahl2) kommen bei mir Fehlermeldungen.
Kannst Du mir bitte den Code mal schicken wie er im ganzen aussehen müsste? Vielleicht mit einer kleinen Erklärung?
Du würdest mir echt weiterhelfen :)
 
Zuletzt bearbeitet:

sjsf

Grünschnabel
Es gibt keine Prüfung, ich lerne das für mich :) Einfach nur aus Interesse und und für den Hausgebrauch, nicht weil ich das Beruflich machen möchte :)
 

sheel

I love Asm
Na gut:
Java:
class MyClass
{
	public static long meinPotenzieren(int base, int power)
	{
		long result = 1;
		while(power > 0)
		{
			result *= base;
			power--;
		}
		return result;
	}

	public static void main(String[] args)
	{
		//Festlegen der Variablen
		int zahl1, zahl2;
		String eingabe;

		//Einlesen der Werte
		zahl1 = Integer.parseInt(JOptionPane.showInputDialog("Bitte geben Sie die erste Zahl ein:"));
		zahl2 = Integer.parseInt(JOptionPane.showInputDialog("Bitte geben Sie die zweite Zahl ein:"));

		//Einlesen der Rechenoperation
		eingabe = JOptionPane.showInputDialog("Geben Sie die gewünschte Operation ein (+, -, *, /, ^):");

		//Auswertung

		switch(eingabe)
		{
			case "+":
			System.out.println("Das Ergebnis = " + (zahl1 + zahl2));
			break;

			case "-":
			System.out.println("Das Ergebnis = " + (zahl1 - zahl2));
			break;
	 
			case "*":
			System.out.println("Das Ergebnis = " + (zahl1 * zahl2));
			break;
	  
			case "/":
			System.out.println("Das Ergebnis = " + (zahl1 / zahl2));
			break;

			case "^":
			System.out.println("Das Ergebnis = " + meinPotenzieren(zahl1, zahl2));
			break;
		}
	}
}

Bei dieser Mini-Aufgabe vermutlich nicht relevant, aber:
a) Wenn das Ergebnis zu groß für eine long-Variable wird bekommt man eben ein falsches Ergebnis (der Maximalwert hat ca. 20 Ziffern). Richtiger Umgang mit so großen Zahlen ist etwas umständlicher.
b) Kommazahlen gehen in den Programm natürlich nicht.
 

sjsf

Grünschnabel
Vielen, vielen Dank! Hab auch direkt meinen Fehler gefunden. Hab die Methode unten angehängt gehabt. *inneeckeundschaemen

1000Dank nochmal!!!!!