gpt4 book ai didi

java - 创建线程时出现 NullPointerException

转载 作者:行者123 更新时间:2023-11-29 09:56:32 24 4
gpt4 key购买 nike

我有一个简单的练习,我先调用一个线程,然后再调用 run() 方法。

但是我得到了一个 NullPointerException。

努力弄清楚为什么会出现这个异常。

package practice;
import java.util.Date;
import java.text.SimpleDateFormat;


class IdDisplay implements Runnable
{
String idNumber;
IdDisplay(String ID)
{
this.idNumber = ID;

}
char [] idMine = this.idNumber.toCharArray();
public void run()
{
for(int i = 0; i < idMine.length; i++)
{
System.out.print(idMine[i] + " ");
try
{
Thread.sleep(1000);
}
catch(InterruptedException in){}


}
}
}
public class Practice
{
public static void main(String[]args)
{


String name = "Arian";
String age = "38";
String id = "7401195021087";

int ageInt;
int year;
int yearBorn;

System.out.println("Welcome " + name + " your age is " + age + " and your ID number " + id);

SimpleDateFormat sdf = new SimpleDateFormat("yyyy");
Date date = new Date();

year = Integer.parseInt(sdf.format(date));
ageInt = Integer.parseInt(age);
yearBorn = year - ageInt;
System.out.println("You were born in " + yearBorn);

IdDisplay idClass = new IdDisplay(id);
Thread tt = new Thread(idClass);
tt.start();



}
}

为什么我会得到这个 NullPointerException。

问候

最佳答案

您声明了两个实例字段:

String idNumber;

char [] idMine = this.idNumber.toCharArray();

第二个的初始值设定项假定第一个不是 null,它是从 null 开始的,因此是异常。实例初始值设定项在进入构造函数之前进行处理。

相反,将初始化移到构造函数中:

IdDisplay(String ID)
{
this.idNumber = ID;
this.idMine = this.idNumber.toCharArray();
}

还强烈建议在一个地方声明所有字段(我更喜欢在类(class)开始时声明它们,但放置它们的位置是样式问题;将它们放在一起是更重要的维护考虑)。 (注意一般规则:在字段支持访问器的情况下,有一个参数用于在访问器旁边声明字段。)事物之间的一些垂直空白可能很有用。

完整更新的 IdDisplay 类:

class IdDisplay implements Runnable
{
String idNumber;
char [] idMine;

IdDisplay(String ID)
{
this.idNumber = ID;
this.idMine = this.idNumber.toCharArray();
}

public void run()
{
for(int i = 0; i < idMine.length; i++)
{
System.out.print(idMine[i] + " ");
try
{
Thread.sleep(1000);
}
catch(InterruptedException in){}
}
}
}

关于java - 创建线程时出现 NullPointerException,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/9925269/

24 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com