出于某种原因,我在检查'if'语句中的String长度时得到NullPointerException。我可能做错了,但我真的不知道。我试图编写的代码基本上只是改变了一个按钮的标签,但只有当字符串'label1'为0个字符长(或未设置)时,才能更改一次。
import java.awt.event.ActionEvent;
import java.awt.event.ActionListener;
import javax.swing.JButton;
import javax.swing.JFrame;
import javax.swing.JPanel;
public class Class1 {
public static String label1;
public static String one = ("Hello");
public static String two = ("Goodbye");
public static void main(String args[]) {
JFrame frame = new JFrame();
JPanel pane = new JPanel();
JButton button = new JButton();
button.addActionListener(new ActionListener() {
@Override
public void actionPerformed(ActionEvent e) {
try {
if(label1.length() == 0) {
label1 = one;
JButton button = (JButton) e.getSource();
button.setText(label1);
}
if(label1.length() < 0) {
label1 = two;
JButton button = (JButton) e.getSource();
button.setText(label1);
}
} catch(Exception ex) {
System.out.println("ERROR");
ex.printStackTrace();
}
}
});
frame.setSize(350, 350);
frame.setVisible(true);
frame.setDefaultCloseOperation(JFrame.EXIT_ON_CLOSE);
frame.add(pane);
pane.add(button);
}
}
答案 0 :(得分:7)
public static String label1;
要使用行if(label1.length() == 0) {
,必须在
lable1
你不是初学者!任何使用它的地方
尝试更改该行
public static String label="";
或添加额外的空条件
if(label1 != null && label1.length() == 0) {
答案 1 :(得分:0)
将一些字符串值分配给label
public static String label1 = new String("someString");
我们在对象引用上调用某个方法时得到NullPointerException
,该对象引用尚未分配任何对象,并且引用是错误的null
答案 2 :(得分:0)
label1为null,因为您没有初始化它。
label1 =“”;
应该解决你的问题(它将是非空的大小0)
答案 3 :(得分:0)
在您的示例中,String对象“label1”未初始化且为NULL。这意味着,如果您尝试在不存在的对象上调用方法,则NullPointerException
必须发生。
要检查是否分配了对象,请尝试if (label1 != null)
。
要分配值,请执行label1 = "my String"
- 这会初始化String对象。
答案 4 :(得分:0)
始终检查null
。例如:
if(label != null && label.length() > 0) {...}
出于兴趣,(label1.length() < 0)
什么时候是真的?