我本来是搞C/C++,最近对JAVA产生浓厚兴趣,可是刚开始就被难住了,哪位先知帮忙解释下:
public class ClassmatesCommunicate {
private class ClassInfo{
public int Num;
public String Name;
public int Age;
public double Hight;
public ClassInfo(){
Num = 0;
Name = "";
Age = 24;
Hight = 1.68;
}
}
private ClassInfo[] Info;
public void CreateClassInfo(){
try{
Info = new ClassInfo[100];/*会产生异常,为什么??*/
for(int i = 0 ; i<100;i++){
System.out.println(Info[i].Hight);
System.out.println(Info[i].Age);
System.out.println(Info[i].Name);
System.out.println(Info[i].Num);
Info[i].Age = (i+20)&30;
Info[i].Hight =(Info[i].Age/100.0+1);
Info[i].Num = i;
Info[i].Name ="wang"+String.valueOf(i);
System.out.println(Info[i].Hight);
System.out.println(Info[i].Age);
System.out.println(Info[i].Name);
System.out.println(Info[i].Num);
}
}
catch(NullPointerException e){
System.out.println("Error!");
System.out.println(e);
} public static void UsingPack(){
ClassmatesCommunicate CC = new ClassmatesCommunicate();
CC.CreateClassInfo();
boolean a = false;
}
}
public class ClassmatesCommunicate {
private class ClassInfo{
public int Num;
public String Name;
public int Age;
public double Hight;
public ClassInfo(){
Num = 0;
Name = "";
Age = 24;
Hight = 1.68;
}
}
private ClassInfo[] Info;
public void CreateClassInfo(){
try{
Info = new ClassInfo[100];/*会产生异常,为什么??*/
for(int i = 0 ; i<100;i++){
System.out.println(Info[i].Hight);
System.out.println(Info[i].Age);
System.out.println(Info[i].Name);
System.out.println(Info[i].Num);
Info[i].Age = (i+20)&30;
Info[i].Hight =(Info[i].Age/100.0+1);
Info[i].Num = i;
Info[i].Name ="wang"+String.valueOf(i);
System.out.println(Info[i].Hight);
System.out.println(Info[i].Age);
System.out.println(Info[i].Name);
System.out.println(Info[i].Num);
}
}
catch(NullPointerException e){
System.out.println("Error!");
System.out.println(e);
} public static void UsingPack(){
ClassmatesCommunicate CC = new ClassmatesCommunicate();
CC.CreateClassInfo();
boolean a = false;
}
}
创建对象数组的时候,在Info = new ClassInfo[100];实例化完数组对象以后,数组里的每个对象都必须实例化才能使用!如: Info = new ClassInfo[2];
Info[0] = new ClassInfo();
Info[1] = new ClassInfo();所以在你的循环里的第一句加上:
Info[i] = new ClassInfo();
char[] a = new char[100];怎么不用每个都实例化呢?