Java 为什么返回的数组不工作?

Java 为什么返回的数组不工作?,java,arrays,return,Java,Arrays,Return,在这段代码中,我试图将一个二维字符数组传递到cArray中,并返回一个一维元素数组,该数组显示二维数组中每一行的字符串 例如: 输入阵列(二维): “a”“b”“c”“d” “e”“f”“g”“h” “i”“j”“k”“l” 返回的数组(一维): abcd efgh ijkl 这是我的密码: 主要内容: 公共类hw2p1 { 公共静态void main(字符串[]args) { //声明并初始化字符数组 char[][]数组={{{'a','b','c','d'}, {'e','f','g

在这段代码中,我试图将一个二维字符数组传递到cArray中,并返回一个一维元素数组,该数组显示二维数组中每一行的字符串

例如:

输入阵列(二维):

“a”“b”“c”“d”

“e”“f”“g”“h”

“i”“j”“k”“l”

返回的数组(一维):

abcd

efgh

ijkl

这是我的密码:

主要内容:

公共类hw2p1
{   
公共静态void main(字符串[]args)
{
//声明并初始化字符数组
char[][]数组={{{'a','b','c','d'},
{'e','f','g','h'},
{'i','j','k','l'};
卡雷阵列1=新卡雷(阵列);
字符串[]array2=array1.getArray();

对于(int i=0;i您的局部变量
newArray
正在隐藏字段
newArray
。更改此行:

String[] newArray = new String[array2.length];
为此:

newArray = new String[array2.length];

局部变量
newArray
正在隐藏字段
newArray
。更改此行:

String[] newArray = new String[array2.length];
为此:

newArray = new String[array2.length];
这就是问题所在:

String[] newArray = new String[array2.length];
这是在构造函数中声明一个局部变量-因此您根本没有给字段赋值。您只需要:

newArray = new String[array2.length];
话虽如此,现在还不清楚为什么需要为此创建一个实例——我很想只创建一个签名为:

static String[] combineArrays(char[][] arrays)
然后您可以只使用一个局部变量,而不必担心任何字段。这也可能与您的
main
方法在同一个类中。

这就是问题所在:

String[] newArray = new String[array2.length];
这是在构造函数中声明一个局部变量-因此您根本没有给字段赋值。您只需要:

newArray = new String[array2.length];
话虽如此,现在还不清楚为什么需要为此创建一个实例——我很想只创建一个签名为:

static String[] combineArrays(char[][] arrays)

然后您可以只使用一个局部变量,而不必担心任何字段。这也可以与
main
方法在同一个类中。

cArray
方法中,您实际上是在初始化一个新的局部变量。相反,您应该使用实例变量

替换此项:

String[] newArray = new String[array2.length];

此外,执行
null
检查总是很好的:

if(array2!=null){
}

cArray
方法中,您实际上是在初始化一个新的局部变量。相反,您应该使用实例变量

替换此项:

String[] newArray = new String[array2.length];

此外,执行
null
检查总是很好的:

if(array2!=null){
}

我喜欢你的解释和建议,不要让
cArray
成为一个类,而是使用一个函数。只需添加编写
this.newArray
就可以更清楚地表明我们正在使用实例变量。谢谢!这解决了所有问题,我最终按照你的建议将其作为一个方法而不是一个全新的类。我喜欢你的解释和建议,不要让
cArray
成为一个类,而是使用一个函数。只需添加编写
this.newArray
就可以更清楚地表明我们正在使用实例变量。谢谢!这解决了所有问题,最后我按照你的建议将其作为一个单独的方法而不是一个全新的类。