获取空指针异常。为什么?

时间:2014-03-27 23:36:14

标签: java

我正在尝试运行此

package mine;

public class MyFantasticJavaClass {

    private static String[] myotherarray;
    public static void main(String[] args) {
        String[] myarray = {"ball","pen","is","large"};
        for(int i=0;i<myarray.length;i++){
            myarray[i] = myotherarray[i];
        }
    }
}

但无论我尝试什么,它都不起作用。

你能帮我吗?

错误是

Exception in thread "main" java.lang.NullPointerException
at mine.MyFantasticJavaClass.main(MyFantasticJavaClass.java:9)

4 个答案:

答案 0 :(得分:2)

您尚未初始化 myotherarray

您的数组必须遵循 String[] myotherarray = new String[length] 格式才能添加任何内容。

为了避免进一步的错误;您无法以您尝试的方式从静态main方法中读取字段 myotherarray ,因为静态方法不会运行字段 MyFantasticJavaClass 所需的 myotherarray 实例化

您需要做的是添加主要方法;

 MyFantasticJavaClass name =  new MyFantasticJavaClass()        

     String[] myarray = {"ball","pen","is","large"};

     name.myotherarray = new String[myarray.length];

     for(int i=0;i<myarray.length;i++){
        myarray[i] = name.myotherarray[i];
     }

假设目的仅仅是将所有元素从一个元素复制到另一个元素,目前你无法将它从原地声明到主体中,或者从主体中移出另一个元素。因为一旦数组被实例化,它的长度是不可改变的。

答案 1 :(得分:2)

myotherarray尚未初始化,因此它等于null。当您尝试使用null变量执行任何操作时,您的JVM(Java虚拟机)不知道该怎么做,因此它会抛出异常。所以你应该像这样初始化数组:

private static String[] myotherarray = new String[5]; // change '5' to however many Strings you want your list to hold.

您可能需要阅读what is a null pointer exception以获得更好的理解。

答案 2 :(得分:1)

您需要初始化myotherarray才能阅读它。当您说myarray[i] = myotherarray[i];时,myotherarray尚未设置为任何内容。你期望从这里读到什么价值?

答案 3 :(得分:0)

试试这个

package mine;

public class MyFantasticJavaClass {

    private static String[] myotherarray;
    public static void main(String[] args) {
        String[] myarray = {"ball","pen","is","large"};
        myotherarray = new String[myarray.length]; //myarray.length is the size of the "other" array
        for(int i=0;i<myarray.length;i++){
            myarray[i] = myotherarray[i];
        }
    }
}

在Java和其他语言中,您始终必须初始化变量。 这是"myotherarray = new String[...];"