Warning: file_get_contents(/data/phpspider/zhask/data//catemap/4/string/5.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Java 检查字符串长度返回NullPointerException?_Java_String - Fatal编程技术网

Java 检查字符串长度返回NullPointerException?

Java 检查字符串长度返回NullPointerException?,java,string,Java,String,出于某种原因,在检查“if”语句中的字符串长度时,我得到了一个NullPointerException。我可能做错了,但我真的不知道。我试图编写的代码基本上只是更改按钮的标签,但前提是字符串“label1”的长度为0个字符(或未设置),因此只能更改一次 import java.awt.event.ActionEvent; import java.awt.event.ActionListener; import javax.swing.JButton; import javax.swing.JFr

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


     }

 }
导入java.awt.event.ActionEvent;
导入java.awt.event.ActionListener;
导入javax.swing.JButton;
导入javax.swing.JFrame;
导入javax.swing.JPanel;
公共班级1{
公共静态字符串label1;
公共静态字符串one=(“Hello”);
公共静态字符串二=(“再见”);
公共静态void main(字符串参数[]){
JFrame=新JFrame();
JPanel窗格=新的JPanel();
JButton button=新JButton();
addActionListener(新建ActionListener()){
@凌驾
已执行的公共无效操作(操作事件e){
试一试{
if(label1.length()==0){
label1=1;
JButton按钮=(JButton)e.getSource();
按钮设置文本(标签1);
}
if(label1.length()<0){
label1=两个;
JButton按钮=(JButton)e.getSource();
按钮设置文本(标签1);
}
}捕获(例外情况除外){
System.out.println(“错误”);
例如printStackTrace();
}
}       
});
框架。设置尺寸(350350);
frame.setVisible(true);
frame.setDefaultCloseOperation(JFrame.EXIT_ON_CLOSE);
框架。添加(窗格);
窗格。添加(按钮);
}
}
要使用行
if(label1.length()==0){
必须先初始化
lable1

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

试着换一条线

public static String label="";
或者添加额外的空条件

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

将一些字符串值分配给
标签

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

当对尚未分配任何对象的对象引用调用某个方法时,我们会得到
NullPointerException
,而对
null
标签1的引用为null,因为您没有初始化它

label1=“”


如果要解决您的问题(大小为0,将为非null)

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

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


若要分配值,请执行
label1=“my String”
-这将初始化字符串对象。

始终检查
null
。例如:

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

出于兴趣,何时为
(label1.length()<0)
是否为真?

您从未初始化过
label1
字符串。在使用它之前初始化label1。公共静态字符串label1=null;这从来都不是真的,我还没有完成整个程序的编写。完全是。我很好奇这种需求是如何产生的。非常感谢!我原以为一个字符串如果为空,就会被标记为包含0个字符没有初始化,但我想没有。@None很乐意帮助您。如果您觉得有帮助,请将其标记为答案(投票箭头下方的绿色勾号)。
if(label != null && label.length() > 0) {...}