2 Stimmen

Versuchst die Antwort für negative Exponenten, nur positive Exponenten und 0 zu finden

Ich kann die Math-Klasse nicht verwenden, wenn ich versuche, die Antwort zu finden. Ich muss die for-Schleifen verwenden, um die Antwort zu berechnen.

package Powers;

import TerminalIO.KeyboardReader; 

public class powers {
public static void main(String [] args) 
{
    KeyboardReader reader= new KeyboardReader();
    //Variablen
    int base; //Die Basiszahl für die Berechnungen
    int minE; //Der minimale Exponent, der verwendet wird
    int maxE; //Der maximale Exponent, der verwendet wird
    int answer; //Ob der Benutzer wiederholen möchte oder nicht
    double result = 1; //Das Ergebnis der Basis zur Potenz des Exponenten

    //Eingaben
    do { /* Start of repeat */  base = reader.readInt ("Bitte geben Sie die Basis ein. "); 
    minE = reader.readInt ("Bitte geben Sie den minimalen Exponenten ein. ");
    maxE = reader.readInt ("Bitte geben Sie den maximalen Exponenten ein. ");
        //Fehlerüberprüfung
        while (minE > maxE) {
            System.out.println("Es scheint einen Fehler zu geben, Ihr minimaler Exponent ist größer als Ihr maximaler Exponent. Bitte geben Sie Ihre Werte erneut ein");
            minE = reader.readInt("Geben Sie Ihren minimalen Exponenten ein. ");
            maxE = reader.readInt("Geben Sie Ihren maximalen Exponenten ein. ");
        }
        //Ende der Fehlerüberprüfung

    //Berechnungen          
        //Ausgabe    
        System.out.println(" Basis          Exponent          Ergebnis");
        System.out.println();
        int expo; //Der Exponent, mit dem die Basis potenziert wird
        for (expo = minE; expo <= maxE; expo++) {

            //Für Exponenten gleich 0
            result = 1; 
            //Für Exponenten <0
            if (expo <0) {
                for (int i= minE;i != 0;i = i + 1) {
                    result = result/base;
                }
            }

            if (expo == 0) {
                result = 1 ;
            }

            //Für Exponenten gleich 1
            if (expo == 1) {
                result = base;
            }
            //Für Exponenten >1
            if (expo > 1) {
                for (int i=1;i<=expo;i++) {
                    result = result*base;
                }
            }

            System.out.println( "    " + base + "                 " + expo + "             " + result); 
        }
        System.out.println();
        answer = reader.readInt ("Möchten Sie wiederholen? Geben Sie 1 ein, wenn ja.");
    } while (answer == 1); //Ende der Wiederholung

}

}

Ein Beispiel für eine Ausgabe ist

Bitte geben Sie die Basis ein. 2
Bitte geben Sie den minimalen Exponenten ein. -2
Bitte geben Sie den maximalen Exponenten ein. 2
Basis          Exponent          Ergebnis

2                 -2             0.25
2                 -1             0.25
2                 0             1.0
2                 1             2.0
2                 2             4.0

Wie Sie sehen können, funktionieren nur 0 und die positiven Zahlen, nicht die negativen.

3voto

Naman Gala Punkte 4682

Du hast die i falsch initialisiert. Statt i= minE ändere es zu i= expo.

for (int i = expo; i != 0; i = i + 1) {
    result = result/base;
}

0voto

Frakcool Punkte 10895

Ich habe gerade eine "Zähler" in der negativen Schleife hinzugefügt. Auf alle Berechnungen für negative Werte wurde immer ein Wert von "-2" (oder der niedrigste Wert) gespeichert.

Sie mussten +1 (-2 + 1 = -1) hinzufügen, damit es korrekt dividiert wurde.

Es war nur ein logisches Problem

    int counter = 0;
    for (expo = minE; expo <= maxE; expo++) {

        //Für den Exponenten 0
        result = 1; 
        //Für den Exponenten <0
        if (expo < 0) {
            for (int i = (minE + counter); i != 0; i = i + 1) {
                result = result / base;
            }
            counter++;
        }

Beispiel für die Ausgabe:

 Basis          Exponent          Ergebnis

    2                 -3             0.125
    2                 -2             0.25
    2                 -1             0.5
    2                 0             1.0
    2                 1             2.0
    2                 2             4.0
    2                 3             8.0

CodeJaeger.com

CodeJaeger ist eine Gemeinschaft für Programmierer, die täglich Hilfe erhalten..
Wir haben viele Inhalte, und Sie können auch Ihre eigenen Fragen stellen oder die Fragen anderer Leute lösen.

Powered by:

X