将1-D String数组转换为2-D char数组

我正在开发一个程序,要求我从文件中获取一维字符串数组并将其转换为二维数组。 从文件中获取数组工作正常,但我不能让第二部分工作。

我正在使用的代码是:

char[][] array2 = new char [7][5]; for (int i = 0; i < array1.length; i++) { array2[i]= array[i].toCharArray(); } for (int i = 0; i < 5; i++) { for (int j = 0; j < 7; j++) { System.out.println(array2[i][j]); } } 

该arrays应该以网格格式打印,但是向下打印。

任何帮助表示赞赏,谢谢。

在内循环中使用print而不是println ,并在每个循环后使用println打印一个空行。

 for (int i = 0; i < 7; i++) // see changes 5/7. You did "new char[7][5]" not [5][7] { for (int j = 0; j < 5; j++) // see changes 7/5 { System.out.print(array2[i][j]); } System.out.println(); } 

更新:

以下是将String数组转换为2D char数组的程序。

 public class StringToChar { public static void main(String[] args) { String[] strArr = { "HELLO", "WORLD" }; char[][] char2D = new char[strArr.length][]; for (int i = 0; i < strArr.length; i++) { char2D[i] = strArr[i].toCharArray(); } for (char[] char1D : char2D) { for (char c : char1D) System.out.print(c + " "); System.out.println(); } } } 

几点建议,

  1. replace char[][] array2 = new char [7][5]; with char[][] array2 = new char [array1.length][]; (其中array1保存您的字符串),因此您的2d数组将包含与您有字符串一样多的行
  2. 你的循环
 for (int i = 0; i < 5; i++) { for (int j = 0; j < 7; j++) .... } 

改成

 for (int i = 0; i < array2.length; i++) { for (int j = 0; j < array2[i].length; j++) .... 

另一件事是如果你想要在行中打印字符串,使用System.out.print ,并且每当你完成内部循环时,打印出'\n'字符

您正在使用println ,这就是为什么每个字符都在自己的行上打印。 您必须使用print

注意你的初始化

 new char [7][5]; 

没有按预期工作,因为内部数组将被覆盖。 使用

 new char[7][] 

为了相同的结果,但你的意图更清晰。 这里

 for (int i = 0; i < 5; i++) for (int j = 0; j < 7; j++) 

你显然已经颠倒了索引的顺序:你只是通过5个外部数组进行迭代,但你已经分配了7.你应该做的是检查实际的数组长度而不是硬编码的数字。 毕竟内部数组可以是任何大小(取决于字符串长度)。

看看String.toCharArray()

如果是向下打印则更改

  for (int i = 0; i < 7; i++) //row loop { for (int j = 0; j < 5; j++) //column loop { System.out.print(array2[i][j]); } System.out.println(); //add here } 

看一下

  1. 格式化
  2. print vs println