Announcement

Collapse
No announcement yet.

If-Anweisungen

Collapse
X
  • Filter
  • Time
  • Show
Clear All
new posts

  • If-Anweisungen

    Ich habe ein Problem bei der Realisierung einer if-Anweisung in Java.
    Ich habe folgenden Code:

    private void btnOK_click(Object source, Event e)
    {
    if(username.setText("Marcel"))
    label2.setText("Benutzername && Passwort OK!");

    }

    Visual J++ 6.0 meldet mir jedoch, dass die Umwandlung von "Void" nach "Boolean" nicht möglich wäre!
    Kann mir irgendjemand helfen, denn ich bin erst Anfänger!

    Vielen Dank im Vorraus

    Marcel Hunold

    e-mail: [email protected]

  • #2
    Hallo Marcel,

    Visual J++ hat schon Recht, denn Du benutzt hier zwei sogenannte "Setter Methoden".
    Diese Methoden findest Du in Java an vielen Stellen. Sie werden benutzt um Werte zu setzen.
    Man soll ja in der OO-Programmiereung möglichst auf direkte Variablenzugriffe verzichten, da solche Änderungen
    u.U weitere Änderungen nach sich ziehen.
    Beispiel: Würde man schreiben meinElement.color = Color.red; dann erhält zwar das Element den neuen Farbwert,
    aber die Änderung wird deswegen noch nicht sofort sichtbar, sondern erst wenn z.B. durch ein Bewegen des
    Anwendungsfensters der gesamte Fensterinhalt (also auch meinElement) neu gezeichnet wird.
    Deshalb wäre hier so vorzugehen: meinElement.setColor(Color.red); Die Methode setColor müsste den Farbwert setzen,
    und das Element neu zeichnen.
    Analog dazu gibt es auch "Getter Methoden"

    Aber nun zu Deinem Problem:
    Ich gehe von der Annahme aus dass Benutzername = "Marcel".

    private void btnOK_click(Object source, Event e)
    {
    if (username.getText().equals(Benutzername))
    {
    label2.setText("Passwort OK!");
    }
    else
    {
    label2.setText("Falsches Passwort!!");
    }
    }

    Erklärung:
    Die Methode getText besorgt den Inhalt aus username nämlich einen String.
    String ist eine Klasse, und besitzt somit Methoden wie die Methode equals().
    Diese Methode vergleicht hier den String aus getText mit dem an equals übergebenen Parameter.
    Wenn die beiden Strings gleich sind wird true (wahr) zurückgeliefert und die Anweisungen
    im if Block ausgeführt.

    Gruss

    Thomas Tasio

    Comment


    • #3
      Ergänzend zur Antwort von Thomas Tasior:
      Der Rückgabetyp der Fkt. setText(...) ist void, eine if-Abfrage benötigt aber ein boolean als Vergleichswert. Daher die Fehlermeldung.
      Dagegen hat die Fkt. equals(...) den Rückgabetyp boolean

      Comment

      Working...
      X