Fragen beantworten über Textfeldeingabe

Dieses Thema Fragen beantworten über Textfeldeingabe im Forum "Allgemeine Java-Themen" wurde erstellt von M4_ix, 25. Nov. 2016.

Thema: Fragen beantworten über Textfeldeingabe Hi Leute, ich probiere gerade ein Programm zu schreiben, welches beim drücken eines Buttons eine Aufgabe stellt und...

  1. Hi Leute,
    ich probiere gerade ein Programm zu schreiben, welches beim drücken eines Buttons eine Aufgabe stellt und man die Lösung dann in ein Textfeld daneben schreibt, die Eingabe wird abgespeichert als String und soll mit der abgespeicherten Lösung (auch ein String) verglichen werden. Wenn die Eingabe mit dem abgespeichertem String übereinstimmt , dann soll eine Nachricht auf einem Label erscheinen und ein MessageDialog kommen, wo Richtig steht, wenn die Eingabe falsch ist: Falsch. Es funktioniert alles, bis auf das letzte, der String wird zwar abgespeichert, aber es funktioniert nicht, es wird immer Falsch ausgegeben statt Richtig
    Ich hoffe es kann jemand helfen.
    Hier mein verwendeter Code:

    Code (Java):



    package Aufgabe;

    import java.awt.Color;
    import java.awt.Dimension;
    import java.awt.FlowLayout;
    import java.awt.Font;
    import java.awt.GridLayout;
    import java.awt.event.ActionEvent;
    import java.awt.event.ActionListener;

    import javax.swing.Icon;
    import javax.swing.ImageIcon;
    import javax.swing.JButton;
    import javax.swing.JFrame;
    import javax.swing.JLabel;
    import javax.swing.JOptionPane;
    import javax.swing.JPanel;
    import javax.swing.JTextField;

    public class Test {

        public static void main(String[] args) {
           
            JFrame jf1 =new JFrame();
            jf1.setVisible(true);
            jf1.setSize(500, 600);

        final    JTextField jt2 = new JTextField();
           
            JButton jb1 = new JButton();
            jb1.setText("Klick mich");
            jf1.add(jb1);
            jf1.add(jt2);
            jt2.setFont(new Font("Times New Roman", Font.BOLD, 30));
            jb1.setBackground(Color.blue);
            jf1.setLayout(new GridLayout(2,8));
            jb1.setFont(new Font("Times New Roman", Font.BOLD, 30));
            final JLabel jt1 = new JLabel();
    jf1.add(jt1);
        jt1.setFont(new Font("Times New Roman", Font.BOLD, 30));
       
                    jf1.pack();
            jb1.addActionListener(new ActionListener() {
               
                public void actionPerformed(ActionEvent evt){
               
           
                jt1.setText("Wer ist ab Januar US Präsident?")
               
            }
            });
           
            final String st2 ="Donald Trump";
           
            final JLabel jl1 = new JLabel();
            jl1.setFont(new Font("Times New Roman", Font.BOLD, 30));
            jf1.add(jl1);
           
            jt2.addActionListener(new ActionListener() {
                public void actionPerformed(ActionEvent evt){
                   
                   
            final String st1 = jt2.getText();
                         

                if (st2==st1) {
                   
                     JOptionPane.showMessageDialog(null, "Richtig");
                     jl1.setText(st1 +" ist rchtig, Ergebnis ist: " + st2);
                       
                   
                }
               
               
                else {
                    jl1.setText(st1 +" ist falsch,Ergebnis wäre: " + st2);
                    JOptionPane.showMessageDialog(null, st1 + " ist Falsch");
                   
                   
               }
                 
                   
                }
            });
           
        }

    }
     
    Zuletzt von einem Moderator bearbeitet: 28. Nov. 2016
  2. Vielleicht hilft dir das Grundlagen Training weiter --> *Klick*
  3. Strings in Java vergleicht man mit equals("");

    Also: if(str1.equals(str2) { .. }
     
    M4_ix gefällt das.
  4. Funktioniert, vielen Dank, dachte das funktioniert auch so, habe das eigentlich auch schon mit == gemacht und es hat funktioniert....
     
  5. ja, manchmal kann das funktionieren - aber auch nicht immer! Aber es wird daran gearbeitet, dass es fast immer funktioniert. :oops:

    Lies dir etwas über inhaltlicher Vergleich von Strings durch - oder hier:
    http://stackoverflow.com/questions/767372/java-string-equals-versus
     
  6. Das liegt daran, dass #equals den Inhalt überprüft und == die Referenz, soweit ich weiß.
    In deinem Fall sind das 2 verschiedene "String-Objekte", welche immer false ergeben, wenn du sie mit == vergleichst.

    Du kannst dir mal folgendes anschauen:
    Code (Text):
    String stringOne = new String( "Hallo Welt!" );
    String stringTwo = new String( "Hallo Welt!" );
    Wenn du beide Strings mit == vergleichst, wird immer false rauskommen, da das man pro String eine neue Instanz erstellt.
     
  7. Auch nicht richtig und so. Verallgemeinerungen und so. 1. Lektion in meinem Kurs. :)
     
  8. Kostenloses Java-Grundlagen Training im Wert von 39 €
    Schau dir jetzt hier das Tutorial an und starte richtig durch!