我正在尝试运行此
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)
答案 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[...];"