【问题标题】:Appending a string into 2d Array Java将字符串附加到二维数组 Java 中
【发布时间】:2018-07-24 09:27:05
【问题描述】:

我有一个包含以下内容的字符串:

String text = "abcdefghijkl"

我想把它放在一个二维数组中,所以会有 4 行 3

这是我目前拥有的,但它无法正常工作:

char boxChar[][] = new char[4][3];
        int j,i;

        for (i = 0; i<4; i++)
        {
            for (j=0; j<3; j++)
            {            

                boxChar[i][j] = text.charAt((i+1)*(j));

            }

        }

        return boxChar[row][col];

【问题讨论】:

  • 为什么不能正常工作?究竟出了什么问题?
  • 写下您希望字符串中的每个索引映射到的索引。从那里开始编写代码应该很容易。

标签: java


【解决方案1】:

看起来你把索引弄混了。我在您的原始代码中添加了一些打印语句,并进行了修改以在您的 charAt 指令中获得正确的字符。

    String text = "abcdefghijkl";

    char boxChar[][] = new char[4][3];
    int j,i;

    for (i = 0; i<4; i++)
    {
        for (j=0; j<3; j++)
        {            

            boxChar[i][j] = text.charAt(i*3+j);
            System.out.print(boxChar[i][j]);
        }
        System.out.println();

    }

如果它没有按照您的预期排列,有时将它记在一张纸上会很有帮助。

使用您的输入字符串,一维数组上的位置是

a    b    c    d    e    f    g    h    i    j    k    l
0    1    2    3    4    5    6    7    8    9   10   11

当您循环获取盒子数组(矩阵)时,您的外部循环表明您需要四行三列,换句话说

a    b    c
d    e    f
g    h    i
j    k    l

所以对于第一个元素a,它的位置是(0,0)b(0,1) 等等。您的 charAt(position) 必须将 2d 位置映射到它们对应的 1d 位置。

【讨论】:

    【解决方案2】:

    只是错误的索引,否则你很好:

    String text = "abcdefghijkl";
    int rows = 4;
    int cols = 3;
    char boxChar[][] = new char[rows][cols];
    
    for (int i = 0; i < rows; i++) {
        for (int j = 0; j < cols; j++) {            
            boxChar[i][j] = text.charAt((i * cols) + j);
        }
    }
    
    //return boxChar[row][col];
    
    System.out.println(boxChar[0]);
    System.out.println(boxChar[1]);
    System.out.println(boxChar[2]);
    System.out.println(boxChar[3]);
    

    【讨论】:

      猜你喜欢
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 2019-02-18
      • 2013-11-30
      • 1970-01-01
      • 2013-10-10
      • 1970-01-01
      • 1970-01-01
      相关资源
      最近更新 更多