Java Hilfe

  • Hi,


    ich bin neu in Java und versuche gerade selbstständig etwas zu programmieren...


    Ich versuche hier eine ganz ganz kleine Abfrage hier zu programmieren, doch bei den markierten Stellen(wo dahinter "// HIIER" steht) wird ein "Fehler" angezeigt und da kommt folgendes:
    ...
    antwort = Scanner1.nextLine();
    if(antwort = "Ja" != null){
    System.out.println("Oke, wie alt bist du denn?");
    ...
    Kennt sich einer aus und mir erklären was ich falsch gemacht habe??

  • Ich kenn mich auch nicht so in Java aus und wird dir dein primäres Problem nicht lösen, jedoch bei Zeile 22 fiel mir auf das das = Zeichen fehlt.
    Und wieso kann man rein wenn das Alter <18 ist? Wäre nicht alter => oder >= 18 optimal?

    ohh ja, kleiner denkfehler...
    Ich denke mal so ist es richtig:

    Code
    if(alter <= 15){
    							System.out.println("Du bist leider zu jung, mach dich vom Acker!");
    						}
    						else if(alter <= 17){
    							System.out.println("Du darfst rein, aber keine alkoholische Getränke bestellen!");
    						}
    						else if(alter >= 18){
    							System.out.println("Hab spaß! :D");
    						}
  • Würde auf folgendes ändern:


    Wenn du etwas vergleichst nutzt man eigentlich immer "==".
    Hoffe konnte dir ein wenig weiterhelfen ;)

  • Musst du gucken, in Python mache ich es immer so: >= , kann jedoch auch sein das man in Java dann => machen muss. Aber ich denke, das ist so richtig.

    Ja das ist schon richtig, danke! Aber löst leider nicht mein eigentliches Problem. :/




    antwort.equals("Ja")
    bzw.
    antwort.equalsIgnoreCase("Ja")


    Was genau meinst du damit? Wie gesagt, ich bin neu und nicht vertraut mit den Befehlen. Kannst du mir sagen wie ich es anwenden soll und




    ...


    Kennt sich einer aus und mir erklären was ich falsch gemacht habe??

    Wäre lieb :)



    EDIT:


    Würde auf folgendes ändern:

    Wenn du etwas vergleichst nutzt man eigentlich immer "==".
    Hoffe konnte dir ein wenig weiterhelfen ;)

    Stimmt, komplett vergessen. Nun das zeigt keine Fehler mehr an, aber es läuft nicht, wie es hätte laufen müssen.
    Es wird abgefragt, ob ich in die Bar möchte, wenn ich dann mit "Ja" oder "Nein" antworte, passiert nichts...
    Ich hab auch schon versucht mit Zahlen zuantworten, aber keine reaktion...

    Einmal editiert, zuletzt von Habub47 ()

  • if (antwort.equals("Ja")) statt if (antwort = "Ja") oder if (antwort == "Ja").
    Compare Strings in Java

    Hat funktioniert, danke! :)


    EDIT:
    Hier nochmal der funktionierende Code:


    Edit2:
    Eine Frage habe ich noch,... Würde das auch mit Boolean funktionieren, wenn ja wie? Ich verstehe Boolean nicht so ganz mit true und false

  • Ich hab es gerade mit eclipse getestet und funktioniert ohne problem, die schleife ist jedoch nicht notwendig

  • Ich hab es gerade mit eclipse getestet und funktioniert ohne problem, die schleife ist jedoch nicht notwendig

    Ja das funktioniert bei mir jetzt auch einwandfrei! :D Danke für deine Hilfe. Mit Schleifen habe ich mich noch nicht auseinandergesetzt.

  • Beitrag von Alf21 ()

    Dieser Beitrag wurde vom Autor aus folgendem Grund gelöscht: doppelter Eintrag (nginx timeout...) ().
  • Die Schleife könntest du höchstens dazu verwenden, um eine mögliche Antwort zu holen.
    Dann würde ich sogar mit ner switch-case Struktur arbeiten.


    z.B. so



    Habe den Code nicht getestet, sollte aber eig. funken ^^

  • In Java prüft man den Vergleich von Zeichenketten generell immer mit equals bzw. equalsIgnoreCase (Groß- und Kleinschreibung ignorieren).

    Einmal editiert, zuletzt von CanColeman () aus folgendem Grund: generell '

  • Falsch, es gibt Ausnahmen. Generell hättest du zwar recht, aber es gibt bspw. Strings aus dem Java internen Pool, die man mit == überprüfen kann. So müsste man bei String Objekten, die man mit "new String(...)" initialisiert, diese zwingend mit equals überprüfen (da sonst die Referenz der Objekte überprüft wird), nicht aber feste Konstanten oder Java Pool internen Strings. Heißt


    antwort == "ja" sollte, wenn man "ja" eingibt, ein true liefern (auch wenn es unsicher ist, aber sonst wäre zB die switch-case nicht möglich).


    Referenz: https://www.java-blog-buch.de/0302-strings-vergleichen/


    Zusätzliche Anmerkung:
    Wenn du es ganz genau haben willst, kannst du auch antwort.toLowerCase().compareTo("ja") == 0 nehmen. So könntest du sogar gleich bei einem NullObject mit einem ErrorHandling antworten und wärst direkt an der "Quelle":
    http://stackoverflow.com/quest…rings-compareto-vs-equals

  • Guten Tag,


    sorry das ich hier dieses Thema wieder aufgreife, aber wie schaffe ich, dass man öfters nachfragen kann wie alt man ist, auch wenn man falsche Werte eingibt?
    Und wie schaffe ich, dass mehrere Antwortmöglichkeiten akzeptiert werden?