我是一個Java初學者,使用DrJava和JDK 8.0編譯器,我正在編寫一個簡單的代碼,創建一個類的數組並在另一個類上調用它的長度。我已經回顧了關於數組的許多線程,但我似乎無法找出爲什麼我的代碼不斷破壞。無法使用方法調用數組?
我寫了一個使用同一個類的相同代碼的版本。然而,當我嘗試使用兩個類來運行它,它打破:
這是我的一個類代碼:
public class SingleClass
{
int array[];
public SingleClass()
{
array = new int[5];
System.out.println("Array Length: "+returnArrayLength());
}
public int returnArrayLength()
{
return array.length;
}
public static void main(String arg[])
{
SingleClass one = new SingleClass();
}
}
當我運行它,它的工作原理:
>run SingleClass
Array Length: 5
容易。
但後來我的兩類代碼(我想要的)不起作用。
這裏是我的兩個類:
public class Array
{
int array[];
public Array()
{
array = new int[5];
}
public int arrayLength()
{
return array.length;
}
}
而另外一個:
public class Test
{
Array testArray;
public Test()
{
returnArrayLength();
}
public void returnArrayLength()
{
System.out.println("array length: "+testArray.arrayLength());
}
public static void main(String arg[])
{
Array testArray = new Array();
new Test();
}
}
當我運行它,我得到一個空指針錯誤:
>run Test
java.lang.NullPointerException
at Test.returnArrayLength(Test.java:12)
at Test.<init>(Test.java:7)
at Test.main(Test.java:18)
at sun.reflect.NativeMethodAccessorImpl.invoke0(Native Method)
at sun.reflect.NativeMethodAccessorImpl.invoke(NativeMethodAccessorImpl.java:62)
at sun.reflect.DelegatingMethodAccessorImpl.invoke(DelegatingMethodAccessorImpl.java:43)
at java.lang.reflect.Method.invoke(Method.java:497)
at edu.rice.cs.drjava.model.compiler.JavacCompiler.runCommand(JavacCompiler.java:272)
我試着使句法完全相同,DrJava認爲沒關係,但出於某種原因,我無法運行此代碼。
什麼可能是我的問題的解決方案?
好的建議。 'testArray'也可以做成'private final'。然後編譯器會抱怨缺少初始化。 – Thilo
沒問題。儘管通過編程自己學習肯定是有益的,但我建議你通讀一本書,例如_Java:初學者指南_。這將幫助您掌握Java的基礎知識,並使這樣的東西變得輕而易舉! –