检查字符串长度是否返回NullPointerException?

时间:2013-06-19 05:13:37

标签: java string

出于某种原因,我在检查'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);


     }

 }

5 个答案:

答案 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)什么时候是真的?