Kleines Rechenprogramm

JavaNoob90

Mitglied
Guten Abend,
Eclipse gibt einen Klammerfehler aus ("}") aber ich finde leider den Fehler nicht 🙁
Ich hoffe jemand kann mir helfen

Vielen Dank im Vorraus 🙂
Java:
import java.util.Scanner;
public class WeiterIFS {

    public static void main(String[] args) {
        double U,R,I;
        String Wert;
        Scanner sc = new Scanner(System.in);
        String beenden;
       
        while (beenden.equals("false")) {
        System.out.println("Welchen Wert brauchen Sie, Spannung, Ohm oder Strom?");
        Wert = sc.nextLine();
        if(Wert.equals("Spannung") || Wert.equals("spannung")) {
            System.out.println("Geben Sie den Wert(Ohm) ein!");
            R = sc.nextDouble();
            System.out.println("Geben Sie jetzt den Wert(Strom) ein!");
            I = sc.nextDouble();
            System.out.println("Ergebnis: " + R * I + " V");
            beenden = sc.nextLine();
            if(beenden.equals("ja") || beenden.equals("Ja")) {
                beenden = "true";
            }
            else if(beenden.equals("Nein") || beenden.equals("nein")) {
                beenden = "false";
        }
        else if(Wert.equals("Ohm") || Wert.equals("ohm")) {
            System.out.println("Geben Sie den Wert(Spannung) ein!");
            U = sc.nextDouble();
            System.out.println("Geben Sie den Wert(Strom) ein!");
            I = sc.nextDouble();
            System.out.println("Ergebnis: " + U/I + " Ohm");
            beenden = sc.nextLine();
            if(beenden.equals("ja") || beenden.equals("Ja")) {
                beenden = "true";
            }
            else if(beenden.equals("Nein") || beenden.equals("nein")) {
                beenden = "false";
        }
        else if(Wert.equals("Strom") || Wert.equals("strom")) {
            System.out.println(("Geben Sie den Wert(Spannung) ein!"));
            U = sc.nextDouble();
            System.out.println("Geben Sie den Wert(Ohm) ein!");
            R = sc.nextDouble();
            System.out.println("Ergebnis " + U/R + " Ampere");
            System.out.println("Rechner beenden? Ja/Nein");
            beenden = sc.nextLine();
            if(beenden.equals("ja") || beenden.equals("Ja")) {
                beenden = "true";
            }
            else if(beenden.equals("Nein") || beenden.equals("nein")) {
                beenden = "false";
            }
        }
        else {
            System.out.println("Bitte den richtigen Wert!");
            beenden = "false";
        }
        }
        sc.close();
    }

}
 
Er hat 13 öffnende geschwungene Klammern und 11 schließende geschwungene Klammern.
Mach ganz unten zwei weitere schließende geschwungene Klammern.

Wenn ich das mache erscheint die Fehlermeldung nicht mehr. Stattdessen erscheint eine Fehlermeldung in der Zeile
Java:
while (beenden.equals("false")) {

"The local variable beenden may not have been initialized"
 
Sry, ist mein erstes (eigenes) "Programm"
😳
Habe die Fehler gefunden habe wohl bei der Codezeile kopieren die klammern vergessen mit einzubeziehen.
Die While will einfach nicht, falls jemand mir einen Tipp geben könnte wäre ich froh. 🙂
 
beenden = "true";
für true oder false nimmst eigentlich boolean.
System.out.println("Ergebnis: " + R * I + " V");
beenden= sc.nextLine();
if(quit.equals("ja") || quit.equals("Ja")) {
ich würde also beenden als boolean nehmen, für die abfrage -beenden eine andere variable, eventuell quit als string, if quit.equals(ja)....beenden=true
 
Statt:
Code:
 if(quit.equals("ja") || quit.equals("Ja")) {
Das:
Code:
if(quit.equalsIgnoreCase("ja")) {
 
IgnoreCase heisst wohl er soll grosskleinschreibung ignorieren? 🙂

Ich hab den Code geändert.
Die schleife funktioniert wunderbar, danke 🙂
Java:
import java.util.Scanner;

public class WeiterIFS {

    public static void main(String[] args) {
        double U, R, I;
        String Wert, quit;
        Scanner sc = new Scanner(System.in);
        boolean beenden;
        beenden = false;

        while (beenden == false) {
            System.out.println("Welchen Wert brauchen Sie, Spannung, Ohm oder Strom?");
            Wert = sc.nextLine();
            if (Wert.equalsIgnoreCase("Spannung")) {
                System.out.println("Geben Sie den Wert(Ohm) ein!");
                R = sc.nextDouble();
                System.out.println("Geben Sie jetzt den Wert(Strom) ein!");
                I = sc.nextDouble();
                System.out.println("Ergebnis: " + R * I + " V");
                System.out.println("Rechner beenden? Ja/Nein");
                quit = sc.nextLine();
                if (quit.equalsIgnoreCase("ja")) {
                    beenden = true;
                } else if (quit.equalsIgnoreCase("Nein")) {
                    beenden = false;
                }
            } else if (Wert.equalsIgnoreCase("Ohm")) {
                System.out.println("Geben Sie den Wert(Spannung) ein!");
                U = sc.nextDouble();
                System.out.println("Geben Sie den Wert(Strom) ein!");
                I = sc.nextDouble();
                System.out.println("Ergebnis: " + U / I + " Ohm");
                System.out.println("Rechner beenden? Ja/Nein");
                quit = sc.nextLine();
                if (quit.equalsIgnoreCase("ja")) {
                    beenden = true;
                } else if (quit.equalsIgnoreCase("Nein")) {
                    beenden = false;
                }
            } else if (Wert.equalsIgnoreCase("Strom")) {
                System.out.println(("Geben Sie den Wert(Spannung) ein!"));
                U = sc.nextDouble();
                System.out.println("Geben Sie den Wert(Ohm) ein!");
                R = sc.nextDouble();
                System.out.println("Ergebnis " + U / R + " Ampere");
                System.out.println("Rechner beenden? Ja/Nein");
                quit = sc.nextLine();
                if (quit.equalsIgnoreCase("Ja")) {
                    beenden = true;
                } else if (quit.equalsIgnoreCase("Nein")) {
                    beenden = false;
                }
            } else {
                System.out.println("Bitte den richtigen Wert!");
                beenden = false;
            }
        }
        sc.close();
    }
}
aber er übernimmt den Wert von quit nicht kein plan wiso 🙁 die IF wird einfach übersprungen
Java:
System.out.println("Ergebnis: " + R * I + " V");
                System.out.println("Rechner beenden? Ja/Nein");
                quit = sc.nextLine();
                if (quit.equalsIgnoreCase("ja")) {
                    beenden = true;
                } else if (quit.equalsIgnoreCase("Nein")) {
                    beenden = false;
in die Variable quit wird auch nichts eingetragen :S
 
Ah super jetzt gehts Danke 🙂 Nur das ichs verstehe, wenn ich vor dieser Zeile noch ein sc.nextLine(); schreibe wird der Puffer gelöscht/zurückgesetzt?
 
Moin,
vielleicht noch zwei Tipps zu diesem Teil hier:
String Wert, quit; // sind beide nicht initialisiert !!
...
boolean beenden; // kann man zusammenfassen!
beenden = false;

while
(beenden == false) { // kannst Du bei bool'schen Wert direkter abfragen

Also so:
Java:
String wert = "";
String quit = "";
...
boolean beenden = false;
while( !beenden ) {
Ist so kompakter und lesbarer, vor allem wenn das Ganze mal deutlich umfangreicher wird! 😉

Gruß Klaus
 
Moin,

da könntest du auch das true setzen des booleans weglassen.Du willst ja das Prog beenden, dann geht auch System.exit(0);
Da kann man drüber streiten ....
Ich lasse ein Programm immer 'normal' (also durch den Programmfluß) auslaufen, da ein exit IMHO immer eine besondere (letzte) Maßnahme - weil ja Programmabbruch (!) - darstellt. Zudem sollte man es mit Vorsicht geniessen.
http://www.javapractices.com/topic/TopicAction.do?Id=86

Gruß Klaus
 

Zurück
Oben