Zum Inhalt springen

Empfohlene Beiträge

Geschrieben

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");

    }

  }

}

Geschrieben (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 von elSusto
Geschrieben

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

Geschrieben

@ 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 :rolleyes: ) 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. :D

Geschrieben (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 von Jogibaer0411
Geschrieben

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. :D

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 B) zusammeh hängen?

B)

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.

Geschrieben

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.

Geschrieben

Ich zitiere:

B)

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");

    }

  }

}

Geschrieben (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 von HJST1979
Geschrieben

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.

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.

Gast
Auf dieses Thema antworten...

×   Du hast formatierten Text eingefügt.   Formatierung wiederherstellen

  Nur 75 Emojis sind erlaubt.

×   Dein Link wurde automatisch eingebettet.   Einbetten rückgängig machen und als Link darstellen

×   Dein vorheriger Inhalt wurde wiederhergestellt.   Editor leeren

×   Du kannst Bilder nicht direkt einfügen. Lade Bilder hoch oder lade sie von einer URL.

Fachinformatiker.de, 2024 by SE Internet Services

fidelogo_small.png

Schicke uns eine Nachricht!

Fachinformatiker.de ist die größte IT-Community
rund um Ausbildung, Job, Weiterbildung für IT-Fachkräfte.

Fachinformatiker.de App

Download on the App Store
Get it on Google Play

Kontakt

Hier werben?
Oder sende eine E-Mail an

Social media u. feeds

Jobboard für Fachinformatiker und IT-Fachkräfte

×
×
  • Neu erstellen...