2

出于某种原因,在检查“if”语句中的字符串长度时,我得到了 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);


     }

 }
4

5 回答 5

8
public static String label1;

使用 之前if(label1.length() == 0) {必须初始化的行lable1

你没有初始化标签!任何使用它的地方

尝试更改该行

public static String label="";

或添加额外的空条件

if(label1 != null && label1.length() == 0) {
于 2013-06-19T05:15:18.670 回答
0

分配一些字符串值label

public static String label1 = new String("someString");

我们NullPointerException在调用尚未分配任何对象的对象引用上的某些方法时得到null

于 2013-06-19T05:15:57.660 回答
0

label1 为空,因为您没有对其进行初始化。

标签1 = "";

应该解决你的问题(它将是非空大小0)

于 2013-06-19T05:17:21.730 回答
0

在您的示例中,字符串对象“label1”未初始化且为 NULL。这意味着,如果您尝试在不存在的对象上调用方法,则NullPointerException必须发生。

要检查是否分配了对象,请尝试if (label1 != null).

要分配一个值,请执行label1 = "my String"- 这会初始化 String 对象。

于 2013-06-19T05:17:58.917 回答
0

始终检查null. 例如:

if(label != null && label.length() > 0) {...}

出于兴趣,什么时候是(label1.length() < 0)真的?

于 2013-06-19T05:18:01.783 回答