在这段代码中,我试图将一个二维字符数组传递给 cArray 并返回一个一维元素数组,该数组显示二维数组的每一行的字符串。
例子:
输入数组(二维):
'a' 'b' 'c' 'd'
'e' 'f' 'g' 'h'
'i' 'j' 'k' 'l'
返回数组(一维):
abcd
efgh
ijkl
这是我的代码:
主要内容:
public class hw2p1
{
public static void main (String [] args)
{
// declare and initialize array of chars
char[][] array = { {'a', 'b', 'c', 'd'},
{'e', 'f', 'g', 'h'},
{'i', 'j', 'k', 'l'} };
cArray array1 = new cArray(array);
String[] array2 = array1.getArray();
for (int i=0; i<array2.length; i++)
System.out.println(i+" "+array2[i]);
}
}
阵列:
public class cArray
{
private String[] newArray;
public cArray ( char[][] array2 )
{
String[] newArray = new String[array2.length];
for (int i=0; i < array2.length; i++)
newArray[i] = String.valueOf(array2[i]);
for (int l=0; l < array2.length; l++)
System.out.println(newArray[l]);
}
public String[] getArray()
{
return newArray;
}
}
当我尝试运行这个时出现这个错误:
Exception in thread "main" java.lang.NullPointerException at hw2p1.main(hw2p1.java:16)
抱歉,如果这是一个明显的错误。我对编程很陌生。感谢您的帮助!
最佳答案
问题是:
String[] newArray = new String[array2.length];
那是在构造函数中声明一个本地 变量 - 所以您根本没有为字段 赋值。你只想:
newArray = new String[array2.length];
话虽如此,目前还不清楚为什么您需要为此创建一个实例 - 我很想只使用一个签名为:
static String[] combineArrays(char[][] arrays)
然后您可以只使用一个局部变量,根本不需要担心任何字段。这也可以与您的 main
方法在同一个类中。
关于java - 为什么这个返回的数组不起作用?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/28034415/