我正在开发一个程序,要求我从文件中获取一维字符串数组并将其转换为二维数组。从文件中获取数组工作正常,但我不能让第二部分工作。
我正在使用的代码是:
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]);
}
}
阵列应该以网格格式打印,但是向下打印。
感谢任何帮助。
答案 0 :(得分:2)
在内部循环中使用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 :(得分:1)
很少有建议,
char[][] array2 = new char [7][5];
替换为char[][] array2 = new char [array1.length][];
(其中array1
包含您的字符串),因此您的2d数组将包含与字符串一样多的行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'
字符
答案 2 :(得分:0)
您正在使用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.你应该做的是检查实际的数组长度而不是硬编码的数字。毕竟内部数组可以是任何大小(取决于字符串长度)。
答案 3 :(得分:0)
如果是向下打印,则更改
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
}
看看