gpt4 book ai didi

java - 不能使用方法调用数组?

转载 作者:行者123 更新时间:2023-11-29 04:59:15 25 4
gpt4 key购买 nike

我是一名使用 DrJava 和 JDK 8.0 编译器的 Java 初学者,我正在编写一个简单的代码,在一个类中创建一个数组并在另一个类中调用它的长度。我查看了很多关于数组的话题,但我似乎无法找出为什么我的代码总是出错。

我编写了一个使用一个类工作的相同代码版本。但是,当我尝试使用两个类运行它时,它会中断:

这是我的一类代码:

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 认为没问题,但由于某些原因我无法运行这段代码。

什么可能是我的问题的解决方案?

最佳答案

Test 类中的Array 对象testArrayArray 对象 不同您在 main 方法中创建的 testArray。您的 Test 类中的 Array 永远不会被初始化,这就是您得到该异常的原因。

您应该像这样将 main 方法中的 testArray 传递给 Test 的构造函数。

Array testArray = new Array();
new Test(testArray);

现在您应该将 Test 中的构造函数更改为以下内容:

public Test(Array array)
{
testArray = array;
returnArrayLength();
}

现在您的 Test 类接受一个 Array 作为构造函数参数,并初始化它以便您可以在您的 Test 类中使用它.

关于java - 不能使用方法调用数组?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/32620450/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com