Java Hilfe

    • Hi,

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

      Java-Quellcode

      1. package de.erstesprogrammieren.java;
      2. import java.util.Scanner;
      3. public class Erstesprogrammieren {
      4. public static void main(String[] args) {
      5. int alter;
      6. String antwort;
      7. Scanner Scanner1 = new Scanner(System.in);
      8. System.out.println("Also du möchtest eine Bar betreten?");
      9. antwort = Scanner1.nextLine();
      10. if(antwort = "Ja"){ // HIEEERRR
      11. System.out.println("Oke, wie alt bist du denn?");
      12. alter = Scanner1.nextInt();
      13. if(alter <= 15){
      14. System.out.println("Du bist leider zu jung, mach dich vom Acker!");
      15. }
      16. else if(alter <= 17){
      17. System.out.println("Du darfst rein, aber keine alkoholische Getränke bestellen!");
      18. }
      19. else if(alter < 18){
      20. System.out.println("Hab spaß! :D");
      21. }
      22. }
      23. else if(antwort ="Nein"){ // <------ HIIEER
      24. System.out.println("Gut, dann nicht.");
      25. }
      26. }
      27. }
      Alles anzeigen
      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??
    • smaxxx schrieb:

      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:

      Quellcode

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

      Java-Quellcode

      1. if(antwort == "Ja"){
      2. System.out.println("Oke, wie alt bist du denn?");
      3. alter = Scanner1.nextInt();
      4. if(alter <= 15){
      5. System.out.println("Du bist leider zu jung, mach dich vom Acker!");
      6. }
      7. else if(alter <= 17){
      8. System.out.println("Du darfst rein, aber keine alkoholische Getränke bestellen!");
      9. }
      10. else if(alter >= 18){
      11. System.out.println("Hab spaß! :D");
      12. }
      13. }
      14. else (antwort == "Nein"){
      15. System.out.println("Gut, dann nicht.");
      16. }
      Alles anzeigen
      Wenn du etwas vergleichst nutzt man eigentlich immer "==".
      Hoffe konnte dir ein wenig weiterhelfen ;)
    • smaxxx schrieb:

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



      Madd92 schrieb:

      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



      DrSkio schrieb:

      ...

      Kennt sich einer aus und mir erklären was ich falsch gemacht habe??
      Wäre lieb :)


      EDIT:

      Würde auf folgendes ändern:

      J0a9 schrieb:


      Java-Quellcode

      1. if(antwort == "Ja"){
      2. System.out.println("Oke, wie alt bist du denn?");
      3. alter = Scanner1.nextInt();
      4. if(alter <= 15){
      5. System.out.println("Du bist leider zu jung, mach dich vom Acker!");
      6. }
      7. else if(alter <= 17){
      8. System.out.println("Du darfst rein, aber keine alkoholische Getränke bestellen!");
      9. }
      10. else if(alter >= 18){
      11. System.out.println("Hab spaß! :D");
      12. }
      13. }
      14. else (antwort == "Nein"){
      15. System.out.println("Gut, dann nicht.");
      16. }
      Alles anzeigen
      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...

      Dieser Beitrag wurde bereits 1 mal editiert, zuletzt von DrSkio ()

    • Madd92 schrieb:

      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:

      Java-Quellcode

      1. package de.erstesprogrammieren.java;
      2. import java.util.Scanner;
      3. public class Erstesprogrammieren {
      4. public static void main(String[] args) {
      5. int alter;
      6. String antwort;
      7. Scanner scanner1 = new Scanner(System.in);
      8. System.out.println("Also du möchtest eine Bar betreten?");
      9. antwort = scanner1.next();
      10. if (antwort.equals("Ja")) {
      11. System.out.println();
      12. System.out.println("Oke du hast also mit " + antwort + " geantwortet.");
      13. System.out.println("Wie alt bist du denn?");
      14. alter = scanner1.nextInt();
      15. System.out.println("Achso.. Du bist also " + alter + " alt.");
      16. if(alter <= 15){
      17. System.out.println("Du bist leider zu jung, mach dich vom Acker!");
      18. }
      19. else if(alter <= 17){
      20. System.out.println("Du darfst rein, aber keine alkoholische Getränke bestellen!");
      21. }
      22. else if(alter >= 18){
      23. System.out.println("Hab spaß! :D");
      24. }
      25. }
      26. else if (antwort.equals("Nein")) {
      27. System.out.println("Gut, dann nicht.");
      28. }
      29. }
      30. }
      Alles anzeigen

      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
    • Quellcode

      1. public static void main(String[] args) {
      2. int alter;
      3. String antwort;
      4. Scanner Scanner1 = new Scanner(System.in);
      5. while(true) {
      6. System.out.println("Also du möchtest eine Bar betreten?");
      7. antwort = Scanner1.nextLine();
      8. if(antwort.equals("Ja")){
      9. System.out.println("Oke, wie alt bist du denn?");
      10. alter = Scanner1.nextInt();
      11. if(alter <= 15){
      12. System.out.println("Du bist leider zu jung, mach dich vom Acker!");
      13. }
      14. else if(alter <= 17){
      15. System.out.println("Du darfst rein, aber keine alkoholische Getränke bestellen!");
      16. }
      17. else if(alter >= 18){
      18. System.out.println("Hab spaß! :D");
      19. }
      20. } else if(antwort.equals("Nein")){
      21. System.out.println("Gut, dann nicht.");
      22. }
      23. }
      24. }
      25. }
      Alles anzeigen
      Ich hab es gerade mit eclipse getestet und funktioniert ohne problem, die schleife ist jedoch nicht notwendig

    • IPrototypeI schrieb:

      Quellcode

      1. public static void main(String[] args) {
      2. int alter;
      3. String antwort;
      4. Scanner Scanner1 = new Scanner(System.in);
      5. while(true) {
      6. System.out.println("Also du möchtest eine Bar betreten?");
      7. antwort = Scanner1.nextLine();
      8. if(antwort.equals("Ja")){
      9. System.out.println("Oke, wie alt bist du denn?");
      10. alter = Scanner1.nextInt();
      11. if(alter <= 15){
      12. System.out.println("Du bist leider zu jung, mach dich vom Acker!");
      13. }
      14. else if(alter <= 17){
      15. System.out.println("Du darfst rein, aber keine alkoholische Getränke bestellen!");
      16. }
      17. else if(alter >= 18){
      18. System.out.println("Hab spaß! :D");
      19. }
      20. } else if(antwort.equals("Nein")){
      21. System.out.println("Gut, dann nicht.");
      22. }
      23. }
      24. }
      25. }
      Alles anzeigen
      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

      Java-Quellcode: Kleine Anregungen

      1. public static void main(String[] args) {
      2. Scanner scanner = new Scanner(System.in);
      3. while (true) {
      4. getAntwort(scanner);
      5. //Hier kann man bspw die Eingabe immer lesen und auf Eingabe Aktionen ausführen
      6. //bspw. kann man, wenn jmd exit eingibt, die Schleife mit 'break' beenden.
      7. //so springt das Programm hinter die Schleife und würde in diesem Fall das Programm beenden
      8. }
      9. }
      10. public static String getAntwort(Scanner scanner) {
      11. System.out.println("Also du möchtest eine Bar betreten? ('ja'/'nein')"); //Man sollte die Optionen mit angeben
      12. String antwort = scanner.nextLine();
      13. switch(antwort.toLowerCase()) {
      14. case "ja":
      15. System.out.println("Oke, wie alt bist du denn?");
      16. int alter = Scanner1.nextInt(); // TODO Hier solltest du noch ein FehlerHandling einbauen (throw-catch structure)
      17. if(alter < 16){
      18. System.out.println("Du bist leider zu jung, mach dich vom Acker!"); //Kurze Info: Mit einer volljährigen Begleitperson darf man auch unter 16 in eine Discothek
      19. }
      20. else if(alter < 18){
      21. System.out.println("Du darfst rein, aber keine alkoholische Getränke bestellen!"); //Kurze Info: Bier, Wein und Sekt darf man bspw, kommt auf die Promille an.
      22. }
      23. else if(alter >= 18){
      24. System.out.println("Hab Spaß! :D");
      25. }
      26. break;
      27. case "nein":
      28. System.out.println("Gut, dann nicht.");
      29. break;
      30. default:
      31. //TODO hier sollte man auch eine Meldung zu falschen Eingabe ausgeben
      32. getAntwort(scanner);
      33. break;
      34. }
      35. }
      Alles anzeigen

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

      Dieser Beitrag wurde bereits 1 mal editiert, zuletzt von Alf21 ()

    • 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":
      stackoverflow.com/questions/15…rings-compareto-vs-equals