Du verwendest einen veralteten Browser. Es ist möglich, dass diese oder andere Websites nicht korrekt angezeigt werden. Du solltest ein Upgrade durchführen oder ein alternativer Browser verwenden.
Hallo.
Ich schreibe gerade an einem Programm, bei dem es eigentlich nur darum ging, "actionlistener" anzuwenden. Ich habs auch endlich geschafft und habe als methode eine if-Schleife verwendet. Es funktioniert aber nicht, also irgendwie übergeht der computer den if befehl und führt nur den else-befehl aus. ich schreib den Quellcode mal rein (Es geht spezifisch um den roten Teil):
Java:
import java.awt.*;
import java.awt.event.*;
public class dir extends Frame
{
TextField password;
TextField antwort;
public static void main ( String[] args )
{
dir frame = new dir ( "Password?" );
frame.setSize( 500, 500 );
frame.setVisible( true );
}
public dir ( String string )
{
super( string );
password = new TextField();
antwort = new TextField();
add( BorderLayout.NORTH, password );
add( BorderLayout.SOUTH, antwort );
password.addActionListener(
new ActionListener()
{
public void actionPerformed( ActionEvent ev )
{
meineMethode();
}
} );
addWindowListener(
new WindowAdapter()
{
public void windowClosing( WindowEvent ev )
{
dispose();
System.exit( 0 );
}
} );
}
[COLOR="Red"]void meineMethode()
{
if (password.equals("hallo")) {antwort.setText("right password");}
else {antwort.setText("wrong password");}
}[/COLOR]
}
Wie kommst Du denn auf die Idee, dass Deine If-Bedingung übergangen wird? Ich denke die wird durchaus ausgeführt (ein Debugger und ein Brechpunkt könnten Dir das auch bestätigen!).
Allerdings vergleichst Du Äpfel mit Birnen. Ein String wie "hallo" ist schon ein ganz anderes Objekt als ein Textfield wie password. Versuch mal den Text des Textfield mit dem Passwort zu vergleichen, dann kommst Du vielleicht auch mal in den Körper der If-Anweisung.
Nebenbei solltest Du den Vergleich umdrehen:
Java:
// Kracht wenn s null ist
if (s.equals("STATISCHER WERT")) {
...
}
// Wird die If-Anweisung nicht betreten, da die nicht erfüllt ist
if ("STATISCHER WERT".equals(s)) {
...
}
Wenn Du Konstanten, Enumerations oder Ähnliches hast, dann solltest Du immer für diese die equals-Methode aufrufen, da Du eben kein zusätzlichen null-check benötigst.