Goodnight Geschrieben 1. Juli 2009 Geschrieben 1. Juli 2009 Moin erstmal Joah, ich sitze jetzt gerade im Büro und habe mir die letzten drei Tage hier auf Anweisung das Java Tutorial interaktiv - Programmieren lernen mit Java - Java-Tutorial durchgelesen. Habe ehrlich gesagt jetzt nicht alles verstanden (um nicht sagen wenig)... Aber gut, vllt kommt ja mit der Praxis die Erleuchtung, dachte ich mir. Jedenfalls sollte ich jetzt mal zur Übung nen simplen Taschenrechner programmieren. Zwei Zahlen, vier Grundrechenarten, Ergebnis. Für die meisten von euch wirds etwas sein, über das sie nur noch lachen können, ich tu mich gerade recht schwer und verzweifel bald, zumal ich mich grad für sehr unfähig halte. Lange Rede, kurzer Sinn, hier ist das gute Stück, wäre für Feedback, Kritik und vor allem Lösungsvorschläge sehr dankbar. Und nicht gleich auslachen... import java.io.*; class test { public static void main ( String[] args ) throws IOException { double eingabe1; double eingabe2; String operation; String zeile; BufferedReader stdin = new BufferedReader( new InputStreamReader( System.in ) ); System.out.println("Geben Sie die erste Zahl ein:"); zeile = stdin.readLine(); eingabe1 = Integer.parseInt( zeile ); System.out.println("Geben Sie die Rechenoperation ein:"); operation = stdin.readLine(); System.out.println("Geben Sie die zweite Zahl ein:"); zeile = stdin.readLine(); eingabe2 = Integer.parseInt( zeile ); if (operation == "+"); { double ergebnis = eingabe1 + eingabe2; } if (operation == "-"); { double ergebnis = eingabe1 - eingabe2; } if (operation == "*"); { double ergebnis = eingabe1 * eingabe2; } if (operation == ":"); { double ergebnis = eingabe1 / eingabe2; } System.out.println( "Ihr Ergebnis lautet: " + ergebnis ); else { System.out.println("Fehlerhafte Eingabe"); } } } Zitieren
elSusto Geschrieben 1. Juli 2009 Geschrieben 1. Juli 2009 (bearbeitet) hi, sieht doch ganz gut aus. aber du hast für die eingegebenen zahlen ja zwei double variablen und konvertierst die eingaben in einen integer also würde ich lieber : Double.parseDouble(zeile) und da du ja auch mit der dummheit der user rechnen musst: Double.parseDouble(zeile.trim()) das .trim() entfernt leerzeichen vor und hinter dem string. und ganz wichtig double ergebnis = 0; if (operation == "+") { ergebnis = eingabe1 + eingabe2; } else if (operation == "-") { ergebnis = eingabe1 - eingabe2; } else if (operation == "*") { ergebnis = eingabe1 * eingabe2; } else if (operation == ":") { ergebnis = eingabe1 / eingabe2; } else { System.out.println("Fehlerhafte Eingabe"); return; } System.out.println( "Ihr Ergebnis lautet: " + ergebnis ); hinter if darf kein ";" stehen und die variable ergebnis musst du vor den if statements initialisieren damit du sie danach weiter verwenden kannst wenn du viele einzelne ifs benutzt würde sich der else block nur auf die lezte abfrage beziehen deswegen mit else if. kannst ja mal mit einzelnen if s und mit else if ausprobieren und dir anschauen was dabei rauskommt. anstatt dem == gibt es für string vergleiche die methode .equals(String) und .equalsIgnoreCase(String) Bearbeitet 1. Juli 2009 von elSusto Zitieren
Mttkrb Geschrieben 1. Juli 2009 Geschrieben 1. Juli 2009 hi, ein paar Punkte hab ich: zum einem kannst du zwei Strings nicht direkt miteinander verlgeichen. Jedenfalls nicht so wie du das gemacht hast. Mit operation.equals("+"); sollte es gehen. Die Methode liefert dir einen Boolean-Wert zurück, der entweder true oder false ist. Schließlich hast du in jeden if-zweig die variable ergebnis deklariert. Diese solltest du an den Anfang setzen wie du es mit eingabe1 und eingabe2 gemacht hast. Ein anderer Punkt ist, der else-Block in den letzten Zeilen. Das Problem ist das sich dieser block auf keinen if-zweig bezieht. Generell versuch mal mit dem Debugger etwas zu arbeiten. Dann wird der Code Schritt für Schritt ausgeführt und du siehst was wann gemacht wird. Ansonsten habe ich spontan nichts gefunden. Für den ersten VErsuch ist es aber schon ok :-) Gruß Jogibaer0411 Zitieren
Goodnight Geschrieben 1. Juli 2009 Autor Geschrieben 1. Juli 2009 @ elSusto: fein, waren zwar Flüchtigkeitsfehler, sieht man aber als Anfänger nicht, danke! @ Jogibaer0411: Stimmt, das else bezieht sich auf nichts bzw. wirds mir auch als Fehler angezeigt. Allerdings war mein Gedankengang eben, dass er das schon machen würde und spontan wüsste ich auch nicht wie ich das lösen soll. das operation.equals(); muss doch in die if-Anweisung, right? Darüber hinaus, ich verwende (oder spiele ) mit Eclipse, also schon ein wenig was besseres als NotePad. Joah, bis dahin einmal danke für die Hilfe und fürs nicht Auslachen. PS: Mach übrigens hier Probearbeit für ne Ausbildungsstelle zum FIAE, wäre also vllt ein nettes Erfolgserlebnis das zu können. Zitieren
Mttkrb Geschrieben 1. Juli 2009 Geschrieben 1. Juli 2009 (bearbeitet) genau das equals wird in deinem fall so eingesetzt if(operation.equals("+")){ ... } Warum sollten wir dich auslachen? Jeder hat mal klein angefangen und im Kindergarten sind wir auch nicht. Bearbeitet 1. Juli 2009 von Jogibaer0411 Zitieren
Goodnight Geschrieben 1. Juli 2009 Autor Geschrieben 1. Juli 2009 Naja, hängt auch stark von der Community bzw. überhaupt dem Themenbereich ab, aber man hat ja schon vieles erlebt. Und was java betrifft schlagen gerade Minderwertigkeitskomplexe durch bei mir. So, zum Thema. Zwei Probleme sind nach wie vor vorhanden. a) if (operation.equals("*"); { ergebnis = eingabe1 * eingabe2; } So siehts jetzt die if-Anweisung aus. Problem: zwischen der Klammer und dem ; in der ersten Zeile kommt eine Fehlermeldung, ein "Syntax-Error". Heißt was? Könnte das mit zusammeh hängen? Fehlermeldung beim "else". Dort steht: Syntax error on token "else", delete this token Das ist das was du meintest, nur weiß ich nicht was ich da genau machen soll. Zitieren
Mttkrb Geschrieben 1. Juli 2009 Geschrieben 1. Juli 2009 nimm mal das ; nach dem if raus und schließe alle Klammern, die geöffnet wurden. habs grad in meinen Beitrag von eben auch korrigiert. Sorry dafür. Zitieren
Goodnight Geschrieben 1. Juli 2009 Autor Geschrieben 1. Juli 2009 Naja, da hätte ich auch aufpassen können... Das wäre weg. Bliebe das else-Problem. Zitieren
perdian Geschrieben 1. Juli 2009 Geschrieben 1. Juli 2009 Bliebe das else-Problem.Definiere "else-Problem" Zitieren
Goodnight Geschrieben 1. Juli 2009 Autor Geschrieben 1. Juli 2009 Ich zitiere: Fehlermeldung beim "else". Dort steht: "Syntax error on token "else", delete this token" Nochmals der komplette Code: import java.io.*; class test { public static void main ( String[] args ) throws IOException { double eingabe1; double eingabe2; double ergebnis; String operation; String zeile; BufferedReader stdin = new BufferedReader( new InputStreamReader( System.in ) ); System.out.println("Geben Sie die erste Zahl ein:"); zeile = stdin.readLine(); eingabe1 = Double.parseDouble(zeile.trim()); System.out.println("Geben Sie die Rechenoperation ein:"); operation = stdin.readLine(); System.out.println("Geben Sie die zweite Zahl ein:"); zeile = stdin.readLine(); eingabe2 = Double.parseDouble(zeile.trim()); if (operation.equals("+")) { ergebnis = eingabe1 + eingabe2; } if (operation.equals("-")) { ergebnis = eingabe1 - eingabe2; } if (operation.equals("*")) { ergebnis = eingabe1 * eingabe2; } if (operation.equals(":")) { ergebnis = eingabe1 / eingabe2; } System.out.println( "Ihr Ergebnis lautet: " + ergebnis ); else { System.out.println("Fehlerhafte Eingabe"); } } } Zitieren
HJST1979 Geschrieben 1. Juli 2009 Geschrieben 1. Juli 2009 (bearbeitet) Hier hat sich der Fehlerteufel eingeschlichen if (operation.equals(":")) { ergebnis = eingabe1 / eingabe2; } System.out.println( "Ihr Ergebnis lautet: " + ergebnis ); else { System.out.println("Fehlerhafte Eingabe"); } } du musst das "System.out.println( "Ihr Ergebnis lautet: " + ergebnis );" an einer anderen Stelle schreiben. Das else hat hier keinen Bezug zu einer Bedingung da zwischen IF und ELSE dein System.out.println steht. if (Bedigung) { CODE System.out.println( "Ihr Ergebnis lautet: " + ergebnis ); } else if (Bedingung) { CODE System.out.println( "Ihr Ergebnis lautet: " + ergebnis ); } else { CODE System.out.println("Fehlerhafte Eingabe"); } Andere Möglichkeit bool fehler; fehler = true; if (Bedigung) { CODE fehler = false; } if (Bedingung) { CODE fehler = false; } if (fehler = false) { System.out.println( "Ihr Ergebnis lautet: " + ergebnis ); } else { System.out.println("Fehlerhafte Eingabe"); } Ich hoffe das hilft dir weiter, gruß Hans-Jörg Bearbeitet 1. Juli 2009 von HJST1979 Zitieren
Goodnight Geschrieben 1. Juli 2009 Autor Geschrieben 1. Juli 2009 JA ! Super, danke! Sieht zwar irgendwie doof aus (hab jetzt das erste Beispiel genommen, erscheint mir einfacher) aber es funktioniert. Wie, ist mir jetzt für erste mal sowas von egal. Zitieren
Empfohlene Beiträge
Dein Kommentar
Du kannst jetzt schreiben und Dich später registrieren. Wenn Du ein Konto hast, melde Dich jetzt an, um unter Deinem Benutzernamen zu schreiben.