java - 为什么这个返回的数组不起作用?

标签 java arrays return

在这段代码中,我试图将一个二维字符数组传递给 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/

相关文章:

java - 如何在不同端口上运行的特定 Netty 客户端实例上发送数据

java - 涉及标识符 R 的错误(将一个项目嵌入另一个项目时)

java - 寻找 FTP 服务器 Java 库

c 打印指针指向的数组的地址

php - 使用PHP的“注意: undefined variable ”,“注意: undefined index ”和“注意: undefined offset ”

Android:如何在我的 Activity 中启动电话,然后再返回?

java - 大于 10 且长度应为偶数的十六进制数字的正则表达式

c - C中的字符串解析。将字符串的一部分复制到另一个字符串

c - 在 C 中的函数中是否必须使用 "return"和 "void"?

javascript - 我的函数没有返回