Java / Informatik: Was ist falsch?

5 Antworten

Du meinst vermutlich:

if (geschlecht == "männlich" && alter >= 18)

beziehungsweise richtig wäre

if (geschlecht.equals("männlich") && alter >= 18)

Um zu erklären, was da los ist, wenn du männlich ohne Anführungszeichen in Java schreibst, dann erwartet Java, dass es eine Variable namens männlich gibt. Du möchtest aber überprüfen, ob die Zeichenkette in der Variable geschlecht gleich der Zeichenkette männlich ist. Daher brauchst du ein sogenanntes "String Literal".

Wenn du eine Zeichenkette auf inhaltliche Gleichheit, also Buchstabe für Buchstabe, prüfen möchtest, dann musst du die Objektmethode "equals" nehmen. Nimmst du das doppelte Gleichheitszeichen, dann wird geprüft, ob die beiden Zeichenketten unter der gleichen Adresse liegen, grob gesagt, nicht ob sie inhaltlich gleich sind.

Begrüßung.java:9:23: error: cannot find symbol

sollte theoretisch diese Zeile sein ...  

if (geschlecht == männlich && alter >= 18) {

du hast keine Variable namens männlich ...

Zudem vergleicht man Strings nicht auf diese Weise - die korrekte Art wäre (für String s1 und s2):

s1.equals(s2)

Das Programm muss so aussehen, dass der Nutzer selbst bestimmt ob er männlich oder weiblich ist.

Deshalb:

geschlecht = InOut.readString("Geschlecht(männlich/weiblich): ");

Kann ich das nicht so machen?

0
@TryLixGR
  1. lies doch mal, was ich geschrieben habe ... deine erwähnte Zeile Code hat nichts mit meiner Antwort zu tun ...
  2. mir sagt jetzt die Klasse InOut nichts, das ist kein Bestandteil vom Standard-Java - daher kann ich das so nicht wirklich beantworten ...
0
@TryLixGR

Das ist ok so.

Für alle zur Erklärung: Die Implementation von readString sieht so aus:

public static String readString(String prompt) {
  System.out.print(prompt);
  return readln();
}

Die Methode readln wiederum nutzt einen BufferedReader, um Daten von der Konsole einzulesen.

0

Kannst du das ganze auch nochmal auf hastebin.com oder pastebin.com hochladen? Dann bin ich auch bereit dir zu helfen

0
@TryLixGR

Ist das die ganze Klasse? Oder wo bekommst du das "männlich" oder "InOut" her?

0
@FaidHD

Ist die ganze Klasse. Das Programm muss so aussehen, dass der Nutzer selbst bestimmt ob er männlich oder weiblich ist.

Deshalb:

geschlecht = InOut.readString("Geschlecht(männlich/weiblich): ");

Kann ich das nicht so machen?

0

Das ä ist nicht zulässig ...

Wenn man keine Ahnung hat sollte man leise sein

0
@Anonymer255

Dann schau dir diese zeile an

if (geschlecht == männlich && alter >= 18) {

und sei leise in deinem loch...

0
geschlecht == männlich

Was soll das sein? Du meinst wohl eher:

geschlecht.equals("männlich")

Außerdem schreibt man System mit einem Großbuchstaben.

Was möchtest Du wissen?