Java beim "if-else" Befehl strings vergleichen?

5 Antworten

Vom Fragesteller als hilfreich ausgezeichnet

Mit "==" werden bei Strings nur die Speicheradressen vergleicht, hast du also ein Programm wie das folgende, so solltest du es nice verwenden:

String s1 = "12345";
String s2 = "12345";

if(s1 == s2){    //false
...
}

Auch wenn der Inhalt der beiden String-Objekte identisch ist, sind die Speicheradressen nicht gleich.

Du solltest stattdessen die von Object vererbte (und überschriebene) Methode

String equals(String anotherString)

verwenden.

Somit wäre das eben gezeigte Programm funktionstüchtig:

String s1 = "12345";
String s2 = "12345";

if(s1.equals(s2)){    //true
...
}

Der Vergleichsoperator "==" sollte allgemein mir bei expliziten Vergleichen auf die Speicheradressen (Referenz), aber sonst bei keinen Referenztypen (String, Array, erc.) verwendet werden.

Ich hoffe, ich konnte dir helfen; wenn du noch Fragen hast, kommentiere einfach.

LG Wi

da du nicht explizit mit new ein neues String objekt erstellst, wird aus dem String-Pool das 12345 genommen und da würde == true ergeben, also in deinem Beispiel. Aber man sollte es so nicht machen, da das ja nicht immer der Fall ist ;)

0

Stimmt - das hatte ich nicht beachtet.

Aber trotzdem sollte bei gewollten Inhaltsvergleichen die dazu zuständige Methode equals(String) verwendet werden. ^^

LG Willibergi

0

Hallo :D

Da Strings Objekte sind, steht in den Variablen nur die Referenz, also eine Adresse, auf dieses Objekt. und mit == prüfst du die referenz.

D.h.:
Dein String bZed hat eine andere Referenzadresse, als dein String Ban1, somit ist hier eine ungleichheit.

Da du auf den Inhalt prüfen möchtest, musst du die Methode euqals() benutzen:
bZed.equals(Ban1);
Mit dieser Zeile wird auf den Inhalt geprüft 

Hoffe es hilft dir weiter :D

Strings kann man nicht per == vergleichen.  Zum Vergleichen von Strings brauchst du die equals() Methode.  du musst also if(variableString.equals("blablabla")){dann ....} schreiben

Strings in Integer umwandeln, Java?

Hallo liebe Community,

in meinem Java Programm gibt der Benutzer zwei Zahlen ein. Einen Dividend und einen Divisor. Mein Problem ist dass die beiden eingegebenen Zahlen als String gespeichert werden. Aber ich möchte dem Benutzer dann den Quotienten, also das Ergebnis der Division, herausgeben. Aber ich weiß nicht wie ich zwei Strings dividieren kann und den Quotienten dann in einem Integer speichern kann.

Hier seht ihr nochmal meinen Code:

import javax.swing.JOptionPane;

public class MainClass_Division { public static void main(String args[]){

String eingabe = JOptionPane.showInputDialog(null, "Bitte geben Sie ein mit welche der vier Grundrechenarten Sie rechnen möchten: "); //Hier werde ich später die Funktion JOptionPane.showOptionDialog benutzen.

if(eingabe.equals("Division")){ dividieren(); } else{ JOptionPane.showMessageDialog(null, "Die Eingabe war falsch"); } }

private static void dividieren(){

String dividend = JOptionPane.showInputDialog(null, "Bitte geben Sie einen Dividend ein: ");

String divisor = JOptionPane.showInputDialog(null, "Bitte geben Sie einen Divisor ein: ");

int quotient = dividend / divisor; //hier liegt mein Problem ich kann den String dividend nicht durch den String divisor teilen. Gibt es vielleicht eine Möglichkeit die Strings dividend und divisor in Integer umzuwandeln?

JOptionPane.showMessageDialog(null, "Ihr Ergebnis lautet: " + quotient);

Ich würde mich sehr freuen wenn mir jemand helfen könnte (:

...zur Frage

Java If-Anweisung funktioniert nicht!?

Hi Leute,

Ich habe vor einigen Tagen angefangen Java zu lernen. Ich arbeite mit Eclipse und wollte so als Anfang ein Programm schreiben in den nach einem Benutzernamen gefragt wird, wenn dieser JustinSeib ist wid man nach dem Passwort gerfragt, das ebenfalls JustinSeib ist! Wenn man dem Benutzernamen falsch eingegeben hat erscheint eine Fehlermeldung und man wird NICHT nach dem Passwort gefragt, wenn nur das Passwort falsch ist erscheint eine entsprechende Fehlermeldung. Aber das scheint bei mir nicht so ganz zu funktionieren, bei mir wird bei beidem IMMER die Fehlermeldung ausgegeben auch wenn ich alles korekkt in groß- und Kleinschreibung und alles beachte! ABER wenn ich in die Bedingung der If Anweisung direkt true reinschreibe funktioniert alles! Hier der Code bitte sagt mir wo mein fehler liegt sofern der fehler im Code liegt, muss er aber denn ich schreiben "JustinSeib" absolut richtig!

import javax.swing.JOptionPane;

public class Lernen {

public static void main(String[] args) {
    
String Benutzername =  JOptionPane.showInputDialog("Geben deinen Benutzernamen ein: ");
    

if (Benutzername == "JustinSeib") { String Passwort = JOptionPane.showInputDialog("Gebe dein Passwort ein: ");

    if (Passwort == "JustinSeib") {
        
        JOptionPane.showMessageDialog(null, "Guten Tag Justin!");
    } else {
        JOptionPane.showMessageDialog(null, "Dein Passwort ist falsch!");
        
    }

    } else {
        
        JOptionPane.showMessageDialog(null, "Dieser Benutzer exestiert nicht!");
        
    }




}

}

...zur Frage

Warum funktionert mein Tascherecher in Java nicht??

das ist der Code ..

import java.util.Scanner;

public class Calc {

public static void main(String args []) {
    Scanner s = new Scanner (System.in) ;
    int w,x,y,z ; 
    System.out.println("Geben sie hre erste Zahl ein");
    w = s.nextInt();
    System.out.println("Nun Ihre zweite");
    x = s.nextInt();  
    System.out.println("Welche Rechenart wollen sie benutzen ?");
    System.out.println("1. Addition");
    System.out.println("2. Subtraktion");
    System.out.println("3. Multiplikation ");
    System.out.println("4. Division ");
    System.out.println("Geben Sie die zugehörige Zahl ein ");
    y= s.nextInt(); 
    
    if(y==1) {
        z = 1111;}
            else if (y==2)  { 
                z = 2222;}
                    else if (y==3)
                        {z = 3333;}  
                            else  if (y==4)
                                {z = 4444;}
                                else; 
                                    {z= 8888;}

    System.out.println("Hier ist ihr Ergebnis " + z);
        
}

} Das soll ein Taschenrechner sein Warum geht das nicht ?

...zur Frage

Java frage zu boolean?

public static void main (string [] args){ System.out.println(welcheKleidung(false));}

public static String welcheKleidung (boolean esRegnet){ if (esRegnet){ return "regenjacken"} else { return "winterjacke"}

woher soll man hier nun wissen was raus kommt? es wurde ja nicht definiert , was false und was true ist?

...zur Frage

Java Spiel Fehler im Code?

Hallo,

Ich muss für die Schule in Java ein Code für ein Spiel schreiben. Hierbei habe ich mich für "Schere, Stein, Papier" mit 5 Varianten entschieden.

Für den Code habe ich lange gebraucht doch als ich endlich fertig war und ihn ausprobiert habe, habe ich keine Fehlermeldung bekommen - sprich der Code enthält 'in Java Sprache' keine Fehler.

Doch das Spiel funktioniert nicht!

Gibt es hier bereitwillige Spezialisten die mir helfen können meinen Fehler im Code zu finden?

Ich bin echt nicht gut in Informatik...

import java.awt.; import java.applet.; import java.util.Scanner;

public class KampfDerElemente extends Applet {

public static void main(String[] args) {

while(true) {

System.out.println("Sie haben die Wahl");

System.out.println("1 - Feuer");

System.out.println("2 - Wasser");

 System.out.println("3 - Luft");

 System.out.println("4 - Erde");

 System.out.println("5 - Elektro");

 Scanner input = new Scanner(System.in);

 int pcwahl;

 pcwahl = (int) (Math.random() * 5) + 1;

 int feuer = 1;

 int wasser = 2;

int luft = 3;

 int erde = 4;

 int elektro = 5;

if (input.nextInt() == pcwahl) {

System.out.println("Unentschieden!");}

if ((pcwahl == feuer) && (input.nextInt() == 3 || input.nextInt() == 5)){

System.out.println("Der Computer hat gewonnen!");

           }

else if (input.nextInt() == 2 || input.nextInt() == 4){

System.out.println("Sie haben gewonnen!");}

                    

           if ((pcwahl == wasser) && (input.nextInt() == 1 || input.nextInt() == 4)){

               System.out.println("Der Computer hat gewonnen!");}

                

               else if (input.nextInt() == 3 || input.nextInt() == 5){

                   System.out.println("Sie haben gewonnen!");}

                    

           if ((pcwahl == luft) && (input.nextInt() == 1 || input.nextInt() == 4)){

               System.out.println("Sie haben gewonnen!");}

                

               else if (input.nextInt() == 2 || input.nextInt() == 5){

                   System.out.println("Der Computer hat gewonnen!");}

                        

           if ((pcwahl == erde) && (input.nextInt() == 1 || input.nextInt() == 3)){

               System.out.println("Der Computer hat gewonnen!");}

                            

               else if (input.nextInt() == 2 || input.nextInt() == 5){

                   System.out.println("Sie haben gewonnen!");}

                    

           if ((pcwahl == elektro) && (input.nextInt() == 1 || input.nextInt() == 3)){

               System.out.println("Sie haben gewonnen!");}

                

               else if (input.nextInt() == 2 || input.nextInt() == 4){

                   System.out.println("Der Computer hat gewonnen!");}

                           }

                       }

                   }

LG Ollivoe

...zur Frage

Wie lerne ich Programmier-Basics?

Ich würde gerne mal ausprobieren zu programmieren, aber da es so viele verschiedene Sprachen gibt, bin ich etwas überfordert und weiß nicht direkt wo ich anfangen soll, vorallem weil ich zuerst noch die Basics lernen sollte. Wie kann ich das am besten machen? Oder soll ich gleich mit einer Sprache wie z.B Java beginnen? Gibt es dazu gute Youtube Kanäle oder Internet Seiten? Danke schonmal

...zur Frage

Was möchtest Du wissen?