由于空指针异常,代码将无法运行
Code won't work because of null pointer exception
我在 java 中有一个简单的两个 class 程序,主要的 class 不想创建名称为 Processor class
的对象
我已经尝试了所有我知道的,但我仍然是一个愚蠢的初学者
public class Main
{
public static void Main()
{
// initialise instance variables
String name="Andy";
System.out.println("That name is "+name.length()+" letters long");
System.out.println("The first letter is "+name.substring(0,1));
nameProcessor np1 = new nameProcessor(name);
if (np1.nameChecker()==false)
System.out.println("That is a nice name.");
else
System.out.println("That is a wierd name.");
}
}
public class nameProcessor
{
private String userName;
private String letters;
private String letter;
private boolean give;
public nameProcessor(String name)
{
// initialise instance variables
String userName=name;
String letters="XYZWxyzw";
String letter="";
boolean give=false;
}
public boolean nameChecker()
{
give=false;
for(int i=0;i<userName.length();i++){
letter=letters.substring(i,i+1);
if (userName.indexOf(letter)!=-1){
give=true;
}
}
return give;
}
}
//一些正确的输出是
//Andy->这个名字好听
//XXX->这是一个奇怪的名字
//任何包含 XYZWxyzw 的字符串都应该 return true
您再次重新定义变量而不是分配给 class 成员
public nameProcessor(String name)
{
// initialise instance variables
String userName=name; // you are resintializing the local variables
String letters="XYZWxyzw";
String letter="";
boolean give=false;
}
因此,您的方法 nameChecker()
将 userName
设为 null,因此出现空指针异常。
这应该是
public nameProcessor(String name)
{
// initialise instance variables
this.userName=name; // you are resintializing the local variables
this.letters="XYZWxyzw";
...
}
我在 java 中有一个简单的两个 class 程序,主要的 class 不想创建名称为 Processor class
的对象我已经尝试了所有我知道的,但我仍然是一个愚蠢的初学者
public class Main
{
public static void Main()
{
// initialise instance variables
String name="Andy";
System.out.println("That name is "+name.length()+" letters long");
System.out.println("The first letter is "+name.substring(0,1));
nameProcessor np1 = new nameProcessor(name);
if (np1.nameChecker()==false)
System.out.println("That is a nice name.");
else
System.out.println("That is a wierd name.");
}
}
public class nameProcessor
{
private String userName;
private String letters;
private String letter;
private boolean give;
public nameProcessor(String name)
{
// initialise instance variables
String userName=name;
String letters="XYZWxyzw";
String letter="";
boolean give=false;
}
public boolean nameChecker()
{
give=false;
for(int i=0;i<userName.length();i++){
letter=letters.substring(i,i+1);
if (userName.indexOf(letter)!=-1){
give=true;
}
}
return give;
}
}
//一些正确的输出是
//Andy->这个名字好听 //XXX->这是一个奇怪的名字
//任何包含 XYZWxyzw 的字符串都应该 return true
您再次重新定义变量而不是分配给 class 成员
public nameProcessor(String name)
{
// initialise instance variables
String userName=name; // you are resintializing the local variables
String letters="XYZWxyzw";
String letter="";
boolean give=false;
}
因此,您的方法 nameChecker()
将 userName
设为 null,因此出现空指针异常。
这应该是
public nameProcessor(String name)
{
// initialise instance variables
this.userName=name; // you are resintializing the local variables
this.letters="XYZWxyzw";
...
}