Fragen beantworten über Textfeldeingabe

Diskutiere Fragen beantworten über Textfeldeingabe im Allgemeine Java-Themen Forum; 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...

  1. M4_ix
    M4_ix Neues Mitglied
    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 dieser Kurs hier weiter --> (hier klicken)
  3. Robat
    Robat Aktives Mitglied
    Strings in Java vergleicht man mit equals("");

    Also: if(str1.equals(str2) { .. }
     
    M4_ix gefällt das.
  4. M4_ix
    M4_ix Neues Mitglied
    Funktioniert, vielen Dank, dachte das funktioniert auch so, habe das eigentlich auch schon mit == gemacht und es hat funktioniert....
     
  5. DerWissende
    DerWissende Bekanntes Mitglied
    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. AccountJava123
    AccountJava123 Neues Mitglied
    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. DerWissende
    DerWissende Bekanntes Mitglied
    Auch nicht richtig und so. Verallgemeinerungen und so. 1. Lektion in meinem Kurs. :)
     
Die Seite wird geladen...

Fragen beantworten über Textfeldeingabe - Ähnliche Themen

Threading-Aufgabe. Totale Noob Fragen, aber bitte trotzdem beantworten ;)
Threading-Aufgabe. Totale Noob Fragen, aber bitte trotzdem beantworten ;) im Forum Java Basics - Anfänger-Themen
Programm: Fragen beantworten
Programm: Fragen beantworten im Forum Java Basics - Anfänger-Themen
Fragen durch API beantworten
Fragen durch API beantworten im Forum Plauderecke
Algorithmus für bessere Kollisionsabfragen
Algorithmus für bessere Kollisionsabfragen im Forum Spiele- und Multimedia-Programmierung
Anfänger-Fragen(Parameter einer Methode)
Anfänger-Fragen(Parameter einer Methode) im Forum Java Basics - Anfänger-Themen
Thema: Fragen beantworten über Textfeldeingabe