Input mit if-else

Bitte aktiviere JavaScript!
Ich habe ein Programm geschrieben, das ich mit java-learn-app laufen lasse.

import java.util.Scanner;

public class Program
{
public static void main(String[] args) {
Scanner h = new Scanner(System.in);
if(h = “yes“) {System.out.println("Richtig"); }
else {System.out.println("Falsch");}
}
}
Screenshot_2019-05-09-02-32-23.jpeg
Ich will, dass man 'yes' eingibt, und dann steht da 'richtig', ansonsten 'falsch'. Was ist der Fehler?
 
A

Anzeige


Vielleicht hilft dir dieser Kurs hier weiter: (hier klicken)
In java ist = eine Zuweisung. Der Operator für den Vergleich ist in Java ==.

Aber bei Referenzen vergleicht == nur die Referenz und nicht den Inhalt. Daher ist hier h.equals("yes") als Bedingung im If richtig.
 
Würdet ihr den Code so schreiben?:

Java:
import java.util.Scanner;

public class Program
{
public static void main(String[] args) {
Scanner h = new Scanner(System.in);
if(h.equals("yes"))   {System.out.println("Richtig"); }
else {System.out.println("Falsch");}
}
}
Oder ist da noch etwas falsch?
 
Zuletzt bearbeitet von einem Moderator:
Also als erstes: Hast Du den Code ausprobierte? Lässt er sich übersetzen? Macht er, was du willst?

Damit kriegst Du direkt eine erste Antwort ohne uns zu bemühen.

Aber: Antwort #4 hast Du noch nicht beachtet.

Und bitte Code immer in Code Tags setzen (z.B. über die ... oberhalb des Eingabefensters und da dann Code auswählen....
 
Ja, O.K. Ich wollte das im nachhinein noch verbessern. Aber ich habe den Code ausprobiert und das verlangt keinen input. Stattdessen schreibt es gleich “falsch“. Screenshot_2019-05-09-14-25-15.jpeg

Und du solltest nicht den Scanner `h` mit einem String vergleichen, sondern `h.nextLine()` mit dem String vergleichen
Wie macht man das?
 
Also generell, indem man sich über die Klassen informiert, die man verwenden möchte.

Natürlich fragt er nichts ab, denn Du nutzt den Scanner ja in keiner Weise. Und der Scanner ist ein Scanner und nie ein String "yes". Daher gibt es sofort "falsch" aus.

Das Buch Java ist auch eine Insel habe ich noch nicht hier erwähnt, daher mache ich das mal:
http://openbook.rheinwerk-verlag.de/javainsel/
Das Buch könnte hilfreich sein, um einen koordinierten Start in die Java Entwicklung zu bekommen.

Den Scanner behandelt das Buch auch in diesem Kapitel:
http://openbook.rheinwerk-verlag.de/javainsel9/javainsel_04_008.htm

Man kann aber auch einfach Google befragen, z.B. nach "Java Scanner Einführung" - dann bekommt man Links wie z.B.
https://javabeginners.de/Ein-_und_Ausgabe/Scanner.php
Da scheint es mir etwas besser erklärt (falls Du wirklich da weiter machen willst und erst einmal den Scanner zum laufen kriegen möchtest ...)

Mit den besten Grüßen,

Konrad
 
Java:
import java.util.Scanner;

public class Program
{
public static void main(String[] args) {
Scanner h = new Scanner(System.in);
h.nextLine();
if(h.equals("yes")) {System.out.println("Richtig"); }
else {System.out.println("Falsch");}
}
}
Habe es so gemacht. Funktioniert nicht.
 
Zuletzt bearbeitet von einem Moderator:
Grundlagen:

Mit der nachfolgenden Zeile erzeugst du eine Instanz der Klasse "Scanner", d.h. die Variable "h" ist vom Typ Scanner.

Java:
Scanner h = new Scanner(System.in);
Hier versuchst du dann eine Instanz der Klasse "Scanner" mit einem String zu vergleichen, das wird so nicht gehen.

Java:
h.equals("yes")
Hier verwendest du die Scannerinstanz, indem du die Methode "nextLine()" darauf aufrufst. Diese Methode liefert als Ergebnis einen String zurück. Allerdings wird dieses Ergebnis nicht verwendet, z.B. indem du es einer String-Variablen zuweist.

Java:
h.nextLine();
 
Das kannst du übrigens noch verkürzen, sodass du den eigentlichen Befehl println nur noch einmal schrieben musst.

Java:
System.out.println(h.equals("yes") ? "Richtig" : "Falsch");
Der Code ist dadurch aber immer noch nicht funktional.

public static void main(String[] args) { Scanner h = new Scanner(System.in); h.nextLine();
Die Signatur der Methode nextLine ist wie folgt.
Code:
public String nextLine()
https://docs.oracle.com/javase/10/docs/api/java/util/Scanner.html#nextLine()
Wenn Du dann nichts mit dem Rückgabewert machst, kann es nicht funktionieren.

TIPP: Mit Zuweisung ist sowas gemeint.
Java:
String inputLine = h.nextLine();
 
Ich habe dieses Programm gefunden.

Java:
import java.util.Scanner;

class EchoQuadrat
{
  public static void main (String[] args)
  {
    Scanner scan = new Scanner( System.in );
    int zahl, quadrat; // zwei int-Variablen deklarieren

    System.out.println("Geben Sie eine Ganzzahl ein:");
    zahl = scan.nextInt();
    quadrat = zahl * zahl ;  // das Quadrat berechnen

    System.out.println("Das Quadrat von " + zahl + " ist " + quadrat);
  }
}
Von hier: http://www.gailer-net.de/tutorials/java/Notes/chap10/ch10_13.html

Das ist für meine Zwecke gut geeignet.
 
Passende Stellenanzeigen aus deiner Region:

Neue Themen

Oben