0

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

我正在使用的代码是:

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]);
    }
}

该数组应该以网格格式打印,但正在向下打印。

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

4

4 回答 4

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();
}

更新:

以下是将字符串数组转换为二维字符数组的程序。

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();
        }
    }
}
于 2013-09-26T13:53:27.537 回答
1

几点建议,

  1. 替换char[][] array2 = new char [7][5];char[][] array2 = new char [array1.length][];array1保存字符串的位置),因此您的二维数组将具有与字符串一样多的行
  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'字符

于 2013-09-26T13:59:28.070 回答
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 个。您应该做的是检查实际数组长度而不是硬编码数字。毕竟,内部数组可以是任意大小(这取决于字符串长度)。

于 2013-09-26T13:47:38.027 回答
0

看看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. 打印与打印
于 2013-09-26T13:50:04.717 回答