Java中JTextField的getText与字符串比较始终返回false问题求助
Java计算器字符串比较失效的解决方法
你遇到的问题核心是字符串比较用错了运算符:在Java中,==用来比较两个对象的内存地址是否相同,而非字符串的内容。即便你通过setText("0")设置了文本,pantalla.getText()返回的字符串对象和字面量"0"可能不是同一个引用,所以==会始终返回false。
解决步骤
替换比较方式:把
==换成equals()方法,这是Java中比较字符串内容的标准方式。- 常规写法:
pantalla.getText().equals("0") - 更安全的写法(避免空指针异常):
"0".equals(pantalla.getText())(如果getText()返回null,这种写法不会报错)
- 常规写法:
修改后的代码示例:
pantalla = new JTextField(); pantalla.setHorizontalAlignment(SwingConstants.RIGHT); pantalla.setBounds(72, 19, 144, 25); contentPane.add(pantalla); pantalla.setColumns(10); pantalla.setText("0"); JButton btn0 = new JButton("0"); btn0.addActionListener(new ActionListener() { public void actionPerformed(ActionEvent e) { pantalla.setText("0"); // 改用equals比较字符串内容 System.out.println("0".equals(pantalla.getText())); // 实现原需求:当前显示为0则替换,否则拼接数字 if ("0".equals(pantalla.getText())) { pantalla.setText(btn0.getText()); } else { pantalla.setText(pantalla.getText() + btn0.getText()); } } });
额外注意
如果担心文本框内容可能包含多余空格(比如误输入的空格),可以先调用trim()去除首尾空格后再比较:
"0".equals(pantalla.getText().trim())
内容的提问来源于stack exchange,提问作者tumorito
相关产品推荐
相关产品推荐

