If abfragen (+, - , /, *)

sk1988

Mitglied
Einen wunderschönen guten Abend,
ich hab hier einen Code in dem er mehrere If abfragen durchgehen soll, jeweils welcher Operator ausgewählt wurde.

Java:
    public static void main(String[] args) {


        double zahl1; // Eingabe 1
        double zahl2; // Eingabe 2
        String operator; // Eingabe Operator
        
        
        zahl1 = Double.parseDouble(JOptionPane.showInputDialog("Bitte geben sie die erste Zahl ein"));
        operator = JOptionPane.showInputDialog("Bitte geben sie +,-,/ oder : ein");
        zahl2 = Double.parseDouble(JOptionPane.showInputDialog("Bitte geben sie die zweite Zahl ein"));
        
        if (operator == +) {
            System.out.println("Das Ergebnis ist "+ summeplus(zahl1, zahl2));
        }
    
    }

}

Leider erkennt er mein If(operator == +) nicht an, kann mir da jemand weiter helfen wie ich die operatoren abfragen kann?
Danke schonmal
mfg Stefan
 

KonradN

Super-Moderator
Mitarbeiter
Nur das + ist im Java Code ein Operator. Da Du da ja nichts addieren willst, ist das so schon falsch.

Du hast in einer Variablen eine Zeichenkette und willst diese vergleichen.
--> Was Du also willst ist ein String Literal: https://www.geeksforgeeks.org/literals-in-java/ - Eine Zeichenkette nur mit einem + wäre "+"
--> Strings sind Referenz-Typen. Diese vergleicht man nicht mit == sondern mit equals.
 

sk1988

Mitglied
Danke, da sind ein Haufen Sachen dabei die mir noch überhaupt nichts sagen :)

Java:
import javax.swing.JOptionPane;
public class xxx {

    


    static double potenz(double p_basis, double p_exponent) {
        
        double potenz = 1 ;
        
        
        for (int i =1 ; i<=p_exponent ; ++i)
            
        {
            potenz = potenz * p_basis ;
        
        }
        return potenz;
        
        
    }

    // Methode Plus
    static double summeplus(double a,double b){
        
        return (a + b); }
    
    // Methode Minus
    static double summeminus(double a,double b) {
        
        return (a - b); }
    
    // Methode Multiplizieren
    static double summemultiplizieren(double a, double b) {
        
        return (a * b); }
    
    // Methode Dividieren
    static double summedividieren(double a, double b) {
    
        return (a / b);
    }
    
    public static void main(String[] args) {


        double zahl1; // Eingabe 1
        double zahl2; // Eingabe 2
        String operator; // Eingabe Operator
        
        //Eingaben
        
        zahl1 = Double.parseDouble(JOptionPane.showInputDialog("Bitte geben sie die erste Zahl ein"));
        operator = JOptionPane.showInputDialog("Bitte geben sie +,-,*, / oder Potenz ein");
        zahl2 = Double.parseDouble(JOptionPane.showInputDialog("Bitte geben sie die zweite Zahl ein"));
        
        //Ausgaben
        
        if (operator.equals("+")) {
            System.out.println("Das Ergebnis ist "+ summeplus(zahl1, zahl2));
        }
            
        else if (operator.equals("-")) {
            System.out.println("Das Ergebnis ist "+ summeminus(zahl1, zahl2));
        }
        
        else if (operator.equals("/")) {
            System.out.println("Das Ergebnis ist "+ summedividieren(zahl1, zahl2));
        }
        
        else if (operator.equals("*")) {
            System.out.println("Das Ergebnis ist "+ summemultiplizieren(zahl1, zahl2));
        }
        
        else if (operator.equals("Potenz")) {   
            System.out.println("Das Ergebnis ist "+ potenz(zahl1, zahl2));
        }

    }
}

habe es jetzt so, mit einer wahrscheinlich sehr simplen Lösung gemacht, die Rechnungen finden in 5 separaten Methoden statt.
 

KonradN

Super-Moderator
Mitarbeiter
Da Du noch direkt am Anfang bist und es bei Dir ja erst um das generelle Verständnis von Java gehen dürfte: Ignorier solche Lösungsideen - diese sind für Dich aus meiner Sicht nicht hilfreich.

Bei Dir dürfte es vor allem darum gehen, dass hier Dinge in Methoden ausgelagert wurde und das hast Du gut gelöst. Was nur auffällt sind die Methodennamen. Diese sollten ja vom Namen her passen und sagen, was da gemacht wird (Ein Verb hilft da!). Dabei dann camelCase verwenden um zusammengesetzte Worte sichtbar zu machen.
"summeplus" - summe und plus sind doppelt - Eine Summe ist ja die Addition zweier Werte und damit der "plus" Operator. Und es wird etwas berechnet, daher wäre doch ein Name wie "berechneSumme" besser. Oder einfach "summiere" oder "addiere".
"summeminus" - das ist jetzt irritierend - denn bei der Subtraktion geht es ja nicht um eine Summe sondern um eine Differenz. "berechneDifferenz" wäre da dann der bessere Name, oder einfach "subtrahiere". Ähnliches gilt für die anderen beiden Methoden mit "summe".

Das ist aber nur ein einfacher Hinweis. Das mag gerade am Anfang übertrieben erscheinen, aber sobald Code etwas umfangreicher wird, ist dies existenziell. Wenn jemand liest: summedividieren(4, 2) - dann wäre doch die Frage: Welche summe wird dividiert? Hier wäre dann ein einfaches "dividiere" oder "berechneQuotient" eher angebracht.
 

sk1988

Mitglied
Danke,
Ja das macht auf jedenfall Sinn, ich werde versuchen besser verständliche Bezeichner zu nutzen.
Ich selber weiß worum es geht aber jemand anders, hätte wohl Probleme, wen der Code größer und umfangreicher wird
 

KonradN

Super-Moderator
Mitarbeiter
Also ich kann Dich nicht verstehen Tobias (Ich gehe davon aus, dass Du unser allseits bekannter Störenfried Tobias bist ... Ich winke mal zum Abschied oder machst Du sofort wieder einen neuen Account?


Einfach mal ein paar Punkte:
- Selbst Du solltest erkennen, dass der TE ein Anfänger ist. Bist Du ernsthaft der Meinung, dass Dein Code ein hilfreicher Beitrag war? Was sollte er Deiner Meinung nach aus Deinem Code lernen (Zumal Du ihm nur den Code hingeworfen hast ohne jede Erläuterung!)

- Der Thread Ersteller hat sehr deutlich geschrieben (#4), dass das Problem gelöst ist. Was also war Dein Punkt, der so wichtig ist für den TE?

- Dann ist Deine Lösung so nicht funktionsfähig bei Java Versionen >= 15, da die Nashorn Script Engine mit Java 15 entfernt wurde. Da wäre also eine Abhängigkeit zu z.B. der Script Engine von GraalVM notwendig. (Hattest Du bezüglich Spotbugs und den NonNull/Nullable Annotations mir geschrieben, dass dies ganz schlimm sei wegen zusätzlicher Abhängigkeiten?)

Du kannst gerne Argumente bringen! Ich lerne sehr gerne dazu. Aber leider zeichnest Du Dich durch pure Meinung und dem verweigern jeglicher Argumente aus. Daher ist es leider reine Zeitverschwendung, sich hier weiter auseinander zu setzen und Zeit in irgendwelche sachlichen Erwiderungen zu stecken.
 

KonradN

Super-Moderator
Mitarbeiter
Naja, ich denke, ich habe das Problem schon gut wiedergegeben, sie reden viel aber sagen wenig.
Wie wäre es denn, wenn Du einfach mal endlich Argumente bringen würdest?
Wenn das Problem aus Sicht des TE mit #4 schon gelöst ist, dann ist doch alles gut. :) Eine Lösung muss ja nicht richtig sein...
Was ist denn genau falsch? Die Lösung des TE war ja noch nicht genannt, aber es wurde ja in #2 von @httpdigest und in #3 von mir etwas geschrieben worden. Wo siehst Du Probleme? Wo ist etwas falsch?

Wieso ist dein Code eine Lösung, wenn jemand z.B. Java 17 nutzen sollte?

Und was ist konkret falsch an der Lösung des TE, die er in #6 gebracht hat? Hier erzählst Du viel ohne irgend etwas konkretes zu sagen. Oder in anderen Worten: Du unterstellst unterschwellig Dinge (hier, dass die Lösung nicht richtig sei) ohne irgend etwas zu belegen.

So kommt es zu einer Problematik, um die sich dann in Kürze Moderatoren / Admins kümmern dürfen ...
 

KonradN

Super-Moderator
Mitarbeiter
Ich versuche ständig, sachliche Punkte zu bringen. Von Dir kommt leider nichts in der Art!

Und jetzt ein "demokratischer Diskurs"? Was hast Du geraucht? In erster Linie geht es um eine Diskussion:
Eine Diskussion ist ein Dialog ..., wobei jede Seite ihre Argumente vorträgt.

Also wie wäre es, wenn Du endlich einmal Deine Polemik sein lassen würdest und Argumente bringen würdest. Und da wunderst Du Dich, dass Du ständig gesperrt wirst und neue Accounts erzeugen musst?

Man könnte sich auch überlegen, um was es hier im Forum geht - und da würde ich etwas sagen wie: Leuten, die mit Fragen kommen, helfen.
==> Wo sind Deine Beiträge auch nur etwas hilfreich?

Aber damit ist es erst einmal erledigt ... wie gesagt: Das Problem lösen (hoffentlich) in Kürze Andere.
 

sk1988

Mitglied
Ich bin aufjedenfall dankbar für JEDE Antwort die mir weiterhilft. Denke nicht das es Sinn der Sache ist zu diskutieren welche richtig / falsch ist, ps_one seine Antwort wird definitiv auch funktionieren, nur ich verstehe es leider noch nicht :) ( ich habe grundkenntnisse in VBA, und an java bin ich erst 3 tage)
KonradN hat mir die Lösung gegeben die ich verstehen und umsetzen konnte.

Gibt es Seiten oder Programme die mein jetziges wissen stärken können, sprich Aufgaben die noch ziemlich simpel sind ? Ich hatte mal etwas gegoogelt, in den meisten Seiten sind die Aufgaben ziemlich schwer / fortgeschritten. Ich kann bis jetzt nur If / Case abfragen und schleifen.

Gruß Stefan
 

KonradN

Super-Moderator
Mitarbeiter
Konzentriere Dich erst noch etwas mehr auf die grundlegende Syntax von Java um das möglichst schnell halbwegs zu können.

An Aufgaben kannst Du Dich auch im Forum umschauen - es gab vor kurzem einige Threads, wo Leute einfach eingescannte Aufgaben gepostet haben (einfach mal 2 oder 3 Tage zurück schauen ... "OOP" oder so war da der Betreff.

Ein Buch, das etwas sein könnte: Captain CiaoCiao erobert Java
Ich selbst kenne es nicht im Detail, aber der Autor versucht, diese Lücke zu schließen.

Ansonsten schau einfach, dass Du ein paar erste Programme selbst schreibst. Versuch es aber am Anfang einfach zu halten und bau dann nach und nach darauf auf. Also wenn möglich nicht zu viel Neues auf einmal. Und immer mehr darauf konzentrieren, was das Ziel ist: Java Grundkenntnisse erwerben und vertiefen.

Wenn Du das hast, dann wäre ein Buch wie "Entwurfsmuster von Kopf bis Fuß" sinnvoll. Da werden diverse Möglichkeiten erläutert, wie man etwas aufbauen kann. Parallel dazu dann auch Clean Code betrachten (https://clean-code-developers.de).

Damit hast Du den Grundstock, mit dem Du dann loslegen kannst: Dann kannst Du Dir überlegen, wohin du gehen willst um dann bei einem Projekt weitere Technologien zu erarbeiten. Sei es eine GUI (Also mit Swing, JavaFX oder SWT) oder mehr Richtung Enterprise mit einem Framework wie Spring Boot, Quarkus, ...
 

Marsupilami

Mitglied
Du kannst Dir in diesem Zusammenhang auch einmal die switch-case Anweisung anschauen. Die erspart Dir bei dieser Aufgabe viel Schreibarbeit hinsichtlich der if und else if Verschachtelungen und das erstellen von Methoden für die einzelnen Operatoren wird damit auch überflüssig. Aber für das Erlernen der Objektorientierung ist das was du gemacht hast natürlich sehr hilfreich.
 
Ähnliche Java Themen
  Titel Forum Antworten Datum
D Map<String, Integer> sortieren und der reinfolge nach die Glieder abfragen Java Basics - Anfänger-Themen 3
onlyxlia Anzahl Random Zahlen mit Scanner abfragen und in Array speichern Java Basics - Anfänger-Themen 10
ven000m Bitcoin Blockhöhe abfragen Java Basics - Anfänger-Themen 12
M Dialogbox solange abfragen, bis gültige Wert-Eingabe Java Basics - Anfänger-Themen 12
Phash Websocket abfragen Java Basics - Anfänger-Themen 1
volcanos List & ArrayList nach Familiennamen abfragen Java Basics - Anfänger-Themen 57
E schneller von der Datenbank abfragen Java Basics - Anfänger-Themen 15
M Checkbox abfragen und Radiobutton Group zurücksetzen Java Basics - Anfänger-Themen 1
L Datenpaare abfragen Java Basics - Anfänger-Themen 11
O ADT Graph nach größe Abfragen Java Basics - Anfänger-Themen 42
B Serial port abfragen Java Basics - Anfänger-Themen 18
F Ordner auf alle Unterdatein abfragen Java Basics - Anfänger-Themen 3
N Abfragen eines Textes aus einem JTextField in Java, Funktion, CardLayout, Java Basics - Anfänger-Themen 2
S boolean Wert von mehreren int Möglichkeiten abfragen ? Java Basics - Anfänger-Themen 4
H Variablen Methode zum Abfragen von Variablen aus Subklassen Java Basics - Anfänger-Themen 9
T Erste Schritte Textfeld abfragen ob etwas enthalten ist. Java Basics - Anfänger-Themen 17
S Asynchrone Socket-Abfragen Java Basics - Anfänger-Themen 5
S mehrfache if-Abfragen - beste Lösung Java Basics - Anfänger-Themen 1
E Abfragen des SimpleDateFormats Java Basics - Anfänger-Themen 1
L int array abfragen Java Basics - Anfänger-Themen 16
T Variablen Var aus While-Schleife abfragen -.-' Java Basics - Anfänger-Themen 9
Y Mehrdimensionales Array diagonal abfragen. Java Basics - Anfänger-Themen 5
S Datenbank auf Knopfdruck abfragen Java Basics - Anfänger-Themen 8
T if abfragen verkürzen Java Basics - Anfänger-Themen 5
M Wo Hilfsvariablen abfragen? Java Basics - Anfänger-Themen 1
M Farben/Color Abfragen von Farben innerhalb einer Methode Java Basics - Anfänger-Themen 9
M "Exceptions abfragen" Java Basics - Anfänger-Themen 6
M Frage nach BestPractice in if-Abfragen Java Basics - Anfänger-Themen 1
P Anlegen und Abfragen von Array List Java Basics - Anfänger-Themen 4
R IF Abfragen Java Basics - Anfänger-Themen 8
R If Abfragen Problem! Java Basics - Anfänger-Themen 4
I Button abfragen ob er geklickt wurde Java Basics - Anfänger-Themen 4
C If Abfragen Problem Java Basics - Anfänger-Themen 46
I Drei booleans abfragen Java Basics - Anfänger-Themen 2
R Input/Output Java String abfragen Java Basics - Anfänger-Themen 3
A Vokabel abfragen Java Basics - Anfänger-Themen 3
R Datentypen Datentyp eines Werts in einer Textdateizeile abfragen und ändern Java Basics - Anfänger-Themen 4
N Best Practice Stilistische Anwendung von if/else-Abfragen Java Basics - Anfänger-Themen 7
E Checkboxen abfragen Java Basics - Anfänger-Themen 10
H if abfragen Java Basics - Anfänger-Themen 38
C TreeMap Abfragen Problem Java Basics - Anfänger-Themen 7
S Abfragen wenn das ende einer Tabelle erreicht ist Java Basics - Anfänger-Themen 8
B mehrere Abfragen zusammenfügen Java Basics - Anfänger-Themen 3
H durch Schleife 50 Variablen abfragen Java Basics - Anfänger-Themen 8
B If abfragen! Java Basics - Anfänger-Themen 9
J checkbox status abfragen und drucken Java Basics - Anfänger-Themen 13
M AWT Applet - Button aus anderer Klasse abfragen Java Basics - Anfänger-Themen 4
F Bedingungen mit Abfragen verknüpfen Java Basics - Anfänger-Themen 7
P länge von array abfragen? Java Basics - Anfänger-Themen 2
Gossi Input/Output Datei Lesen, inhalt abfragen, speichern Java Basics - Anfänger-Themen 5
T jNumberField auf null abfragen Java Basics - Anfänger-Themen 5
Z Erste Schritte LinkedList Werte abfragen und vergleichen Java Basics - Anfänger-Themen 3
S Input/Output Welche Möglichkeiten Eingabe von User abfragen Java Basics - Anfänger-Themen 5
H Checkboxstatus abfragen Java Basics - Anfänger-Themen 10
S unzulässigen Wert abfragen - aber wo Java Basics - Anfänger-Themen 3
eLogic Aktive Internetverbindung abfragen Java Basics - Anfänger-Themen 21
B Abfragen eines Preises.. Java Basics - Anfänger-Themen 20
D Touchpad abfragen?! Java Basics - Anfänger-Themen 9
D Abfragen ob Excel-Dateien Makros enthalten? Java Basics - Anfänger-Themen 4
B Abfragen eines Excel-Feldes auf null Java Basics - Anfänger-Themen 17
B GridLayout - elemente mit Maus abfragen Java Basics - Anfänger-Themen 3
B Daten in Instanz einer Klasse ändern / abfragen Java Basics - Anfänger-Themen 12
M Datentypen String mit Trennzeichen abfragen Java Basics - Anfänger-Themen 7
D GUI Checkboxen in allen Klassen abfragen? Java Basics - Anfänger-Themen 5
B OOP String auf bestimmte Zeichen abfragen Java Basics - Anfänger-Themen 4
M Double.NaN abfragen Java Basics - Anfänger-Themen 6
J Performance Vergleich von if-Abfragen mit mehreren Bedingungen Java Basics - Anfänger-Themen 9
H Objecttyp abfragen... Java Basics - Anfänger-Themen 11
N Zeilenanzahl einer TXT abfragen..? Java Basics - Anfänger-Themen 11
S Bremsen 3 IF-Abfragen ein Programm? Java Basics - Anfänger-Themen 7
T scanner bestimmtes format abfragen Java Basics - Anfänger-Themen 5
T JOptionPane mit .showInputDialog: Ergebnis abfragen? Java Basics - Anfänger-Themen 2
S Absatz aus Textdokument abfragen Java Basics - Anfänger-Themen 6
B gedrückte Tasten abfragen Java Basics - Anfänger-Themen 11
L "unschöne" if-Abfragen Java Basics - Anfänger-Themen 4
JFeel-x JComponent<-----Eigenschaften<-- Als Liste abfragen? Java Basics - Anfänger-Themen 8
P Pixelfarbe abfragen Java Basics - Anfänger-Themen 8
J einfache Tastendrücke in einem JFrame abfragen Java Basics - Anfänger-Themen 2
S if-Abfragen bringen mich zum VERZWEIFELN! Java Basics - Anfänger-Themen 12
B Aus JTable ImageIcon abfragen Java Basics - Anfänger-Themen 8
hdi Desktop-Auflösung abfragen -> setLocation() von Frame Java Basics - Anfänger-Themen 5
D jeditorpane checkbox abfragen? Java Basics - Anfänger-Themen 7
A Googel Lokal abfragen Java Basics - Anfänger-Themen 7
G in einem inputstream auf " " abfragen? Java Basics - Anfänger-Themen 3
T Rechner-Name abfragen Java Basics - Anfänger-Themen 6
N Event auf JTabbedPane abfragen ? Java Basics - Anfänger-Themen 8
M Maus position abfragen und setzen? Java Basics - Anfänger-Themen 1
L JTabel abfragen ob es eine erste Zeile gibt? Java Basics - Anfänger-Themen 2
G If Abfragen Java Basics - Anfänger-Themen 3
T Variablen Classübergreifen abfragen Java Basics - Anfänger-Themen 6
S Abfragen ob Label enabled ist . Java Basics - Anfänger-Themen 2
M Status von ext. Programm abfragen Java Basics - Anfänger-Themen 2
G [Applet] Mauskkoodinaten abfragen Java Basics - Anfänger-Themen 3
C String.split("") einzelne Positionen abfragen Java Basics - Anfänger-Themen 10
R Vector mit contains abfragen Java Basics - Anfänger-Themen 32
T String splitten und auf fehler abfragen Java Basics - Anfänger-Themen 3
V thread, variable abfragen Java Basics - Anfänger-Themen 14
F Abfragen aber wie ? Java Basics - Anfänger-Themen 7
G JDialog-Status im Frame abfragen Java Basics - Anfänger-Themen 2
V .jar macht keine Datenbank abfragen Java Basics - Anfänger-Themen 3

Ähnliche Java Themen

Neue Themen


Oben