回 帖 发 新 帖 刷新版面

主题:java.lang.NullPointerException 急急急急急急急用!!

java.lang.NullPointerException问题.急用!
 public class Dog { 

Dog(String name,double age){ 
setName(name); 
setAge(age); 

Dog(String name,int age){ 
setName(name); 
setAge(age); 


public void setName(String name){ 
Name=name; 

public void setAge(double age){ 
Age=age; 

public void setAge(int age){ 
Age=age/7.0; 

public String getName(){ 
return Name; 

public double getAge(){ 
return Age; 

public String toString(){ 
String dogId=this.getName()+"\t"+Double.toString(this.getAge()); 
return dogId; 

public void update(String name,double age){ 
setName(name); 
setAge(age); 

private String Name; 
private double Age; 


以上是Dog类下面是驱动类 
1.import java.util.*; 
2.public class Kennel { 
3. public static void main(String[] args) { 
4. 
5. final int SIZE_OF_DOGS=6; 
6. Dog[] allDogs=null; 
7. System.out.println("The initial information of " +"the dogs is as follows:\nName\tAge\n\n"); 
8. for(int i=0;i<SIZE_OF_DOGS;i++){ 
9. String name="dog"+Integer.toString(i+1); 
10. double age=1.50+i; 
11. allDogs[i]=new Dog(name,age); 
12. System.out.println(allDogs[i].toString()); 
13. } 

//更新Name,Age 
System.out.println("After update:\nName\tAge"); 
String[] nameToUpdate=null; 
String [] ageToUpdate=null; 
Scanner scan1=new Scanner(System.in); 
Scanner scan2=new Scanner(System.in); 
for(int i=0;i<SIZE_OF_DOGS;i++){ 
nameToUpdate[i]=scan1.next(); 
ageToUpdate[i]=scan2.next(); 
allDogs[i].update(nameToUpdate[i], Double.parseDouble(ageToUpdate[i])); 






运行后提醒Exception in thread "main" java.lang.NullPointerException 
at Kennel.main(Kennel.java:11) 

在第十一行出现问题,该怎么解决?

回复列表 (共2个回复)

沙发

数组如果没有指定长度,则长度为零,所以在使用数组前必须用new指定数组长度。 

class Kennel 

public static void main(String[] args) 

 
  Dog[] allDogs = new Dog[6]; 
  System.out.println("The initial information of " +"the dogs is as follows:\nName\tAge\n\n"); 
 for(int i=0;i<allDogs.length;i++)
 { 
 
   String name="dog"+Integer.toString(i+1); 
   double age=1.50+i; 
   allDogs[i]=new Dog(name,age); 
    System.out.println(allDogs[i].toString()); 
  }
 }
}

板凳

因为你把数组开始付值为null了,而后来又没有初始化,所以才会抛出java.lang.NullPointerException 异常!
还有,数组如果没有指定长度,长度不为0,是无法使用长度这个值,如.length是不存在的.  初始化以后.length就存在了.  
你既然已经知道SIZE_OF_DOGS的值了就可以把数组大小直接初始化为它,如果不知道的话,就可以用ArrayList或者Vector,他们都是动态的.

我来回复

您尚未登录,请登录后再回复。点此登录或注册