2013-06-19 42 views
2

出于某种原因,我在'if'语句中检查字符串长度时收到NullPointerException。我可能做错了,但我不知道。我试图写的代码基本上只是改变按钮的标签,但只有当字符串'label1'为0个字符长(或未设置)时,才能更改一次。检查字符串长度是否返回NullPointerException?

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

您从未初始化'label1'字符串。 –

+0

使用前初始化你的label1 it.public static String label1 = null; –

回答

7
public static String label1; 

使用的线路if(label1.length() == 0) {你并初始化lable1

你是不是intialised拉布勒!任何地方的任何使用它

尝试调用时更改了该行

public static String label=""; 

或添加额外的空条件

if(label1 != null && label1.length() == 0) { 
+0

非常感谢!我以为一个字符串将被标记为包含0个字符,如果它没有被初始化,但我猜不是。 –

+0

@NoneNone很高兴为您提供帮助。如果您发现有帮助,请将其标记为答案(绿箭头在投票箭头下方)。 –

0

一些字符串值分配给label

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

我们得到NullPointerException在一个没有蜜蜂的对象引用上的一些方法n尚未分配任何对象,并且此参考正在被拒绝null

0

label1为空,因为您没有初始化它。

label1 =“”;

应该解决您的问题(这将为非空大小为0)

0

在你的榜样,String对象“LABEL1”没有初始化NULL。这意味着,如果您尝试在不存在的对象上调用方法,则必须发生NullPointerException

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

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

0

总是检查null。例如:

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

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

+0

从来没有这样,我还没有写完整个程序。 –

+0

相当。我对如何产生需求很感兴趣。 – SK9

相关问题