簡體   English   中英

Eclipse中的Java程序錯誤

[英]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.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM