[英]java program bug in eclipse
我是java的新手,我只想在Earth類中創建人類對象數組
但是我得到了錯誤:
Earth.main(Earth.java:14)的線程“ main”中的異常java.lang.NullPointerException
我不知道我的程序有什么問題,關於語法的一切似乎都是正確的。
輸入:
2
12
aks(...和..程序崩潰)
import java.util.*;
public class Human {
String name;
int age;
int height;
String eyecolor;
//construct necessary
public Human() {
}
public void speak() {
System.out.println("Hello My name is " + name);
System.out.println("I am "+height + "inches tall");
}
public void eat() {
System.out.println("eating...");
}
}
import java.util.*;
public class Earth {
public static void main(String args[]) {
Human humans[] = new Human[10];
System.out.println("Enter the number of humans\n");
Scanner sc = new Scanner(System.in);
int n = sc.nextInt();
for(int i=0;i<n;i++) {
int age;
String name;
age = sc.nextInt();
name = sc.next();
humans[i].age=age;
humans[i].name=name;
}
for(int i=0;i<n;i++) {
System.out.printf("name is %s and age is %d \n", humans[i].name,humans[i].age);
}
sc.close();
}
}
您的聲明:
Human humans[] = new Human[10];
創建一個可容納10個人的數組,但不會創建這些個人。 而是將10個條目中的每一個都初始化為humans[i].age=age;
因此,當您嘗試在humans[i].age=age;
使用它們時會出現異常humans[i].age=age;
而是在循環中創建人員:
for(int i=0;i<n;i++) {
int age;
String name;
age = sc.nextInt();
name = sc.next();
humans[i] = new Human(); // Add This
humans[i].age=age;
humans[i].name=name;
}
將數組的聲明移至用戶輸入所需人數之后也是一個好主意。 就目前而言,沒有什么可以阻止用戶輸入大於10的數字,這也會引起問題。 因此,嘗試類似:
System.out.println("Enter the number of humans\n");
Scanner sc = new Scanner(System.in);
int n = sc.nextInt();
Human humans[] = new Human[n];
聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.