if-else语句给出了错误的输出

dgenwo3n  于 2021-07-12  发布在  Java
关注(0)|答案(1)|浏览(379)

这个问题在这里已经有答案了

如何比较java中的字符串(23个答案)
两天前关门了。
我试图通过使用if else条件在代码中的文本框上添加验证
我在textbox上添加了focuslistener,当我从textbox中移除焦点时,它会检查条件
我还在chekbox旁边创建了一个标签,它将根据条件显示文本
如果文本框中的文本不等于“hi”,则应在文本框旁边的标签中打印“hello”
否则应该打印“再见”

import java.awt.*;  
import java.awt.event.ActionEvent;
import java.awt.event.ActionListener;
import java.awt.event.FocusAdapter;
import java.awt.event.FocusEvent;
import javax.swing.*;

public class regframe extends JFrame implements ActionListener
{

    private static final long serialVersionUID = 1L;
    JTextField t1,t2;
    JLabel l1,l2,l3,l4;
    JButton b;

    regframe()
    {   
        getContentPane().setBackground(Color.BLACK);
        l1=new JLabel("Enter First Num:");
        l1.setBounds(50,50,150,20);
        l1.setForeground(Color.WHITE);
        l1.setFont(new Font("Verdana",Font.BOLD,12));
        add(l1);

        t1=new JTextField();
        t1.setBounds(180,50,100,20);
        t1.setBackground(Color.BLACK);
        t1.setForeground(Color.WHITE);
        t1.setBorder(BorderFactory.createMatteBorder(0, 0, 1, 0,Color.YELLOW));
        t1.setCaretColor(Color.CYAN);
        t1.setFont(new Font("Verdana",Font.BOLD,12));
        t1.addActionListener(this);
        add(t1);

        l3=new JLabel();
        l3.setBounds(290,50,150,20);
        l3.setForeground(Color.CYAN);
        l3.setOpaque(false);
        l3.setFont(new Font("Verdana",Font.BOLD,10));
        add(l3);

        t1.addFocusListener(new FocusAdapter() 
        {
            public void focusLost(FocusEvent e)
            {
                if(t1.getText()!="hi")
                {
                    l3.setText("hello");
                }
                else
                {
                    l3.setText("bye");
                }
            }
        });

        l2=new JLabel("Enter Second Num:");
        l2.setBounds(50,80,150,20);
        l2.setForeground(Color.WHITE);
        l2.setFont(new Font("Verdana",Font.BOLD,12));
        add(l2);        

        t2=new JTextField();
        t2.setBounds(180,80,100,20);
        t2.setBackground(Color.BLACK);
        t2.setForeground(Color.WHITE);
        t2.setBorder(BorderFactory.createMatteBorder(0, 0, 1, 0,Color.YELLOW));
        t2.setCaretColor(Color.CYAN);
        t2.setFont(new Font("Verdana",Font.BOLD,12));
        add(t2);

        b=new JButton("Submit");
        b.setBounds(100,120,100,20);
        b.setBackground(Color.CYAN);
            b.setForeground(Color.BLACK);
        add(b);

        setLocation(300,200);
        setSize(700,250);
        setLayout(null);
        setTitle("Registration");
        setVisible(true);
        setDefaultCloseOperation(EXIT_ON_CLOSE);

    }

    public static void main(String args[])
    {
        new regframe();
    }

    public void actionPerformed(ActionEvent arg0) 
    {

    }
}

但是当我运行代码时,它总是显示“hello”,即使我在文本框中写“hi”


请帮忙

bmp9r5qi

bmp9r5qi1#

使用

if(!"hi".equals(t1.getText())

而不是

if(t1.getText()!="hi")

你也可以这样做 if(!t1.getText().equals("hi")) 但另一种方法更为空安全
看一看https://www.javatpoint.com/string-comparison-in-java

相关问题