Input mit if-else

  • Themenstarter steven789hjk543
  • Beginndatum
Diskutiere Input mit if-else im Java Basics - Anfänger-Themen Bereich.
steven789hjk543

steven789hjk543

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?
 
K

kneitzel

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.
 
H

httpdigest

Und du solltest nicht den Scanner `h` mit einem String vergleichen, sondern `h.nextLine()` mit dem String vergleichen.
 
steven789hjk543

steven789hjk543

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:
K

kneitzel

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....
 
steven789hjk543

steven789hjk543

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?
 
sascha-sphw

sascha-sphw

Code:
h.nextLine();
Gibt Dir einen String zurück. Dann mit equals() wie oben beschrieben.
 
K

kneitzel

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
 
steven789hjk543

steven789hjk543

steven789hjk543

steven789hjk543

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:
T

temi

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();
 
sascha-sphw

sascha-sphw

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();
 
steven789hjk543

steven789hjk543

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

Input mit if-else

Passende Stellenanzeigen aus deiner Region:
Anzeige

Neue Themen

Anzeige

Anzeige
Oben