二维字符串[]转换为字符串,输出=矩阵

时间:2014-01-06 01:14:03

标签: java char

我写了代码:

public static void main(String[]args)
{
    Scanner input = new Scanner(System.in);

    System.out.print("Type your text: ");
    String text = input.nextLine();

    int counter = text.length();
    if(text.length()> 16)
    {
        System.out.println("Error: input text is greater than 16 characters");
        System.exit(0);
    }
    else
    {
        while(counter < 16)
        {
            text = text.concat("x");
            counter++;
        }

        char[][] k = new char[4][4];

        int push = 0;

        for(int i = 0; i < k.length; i++)
        {
            for(int j = 0; j < k[i].length; j++)
            {
                k[i][j] = text.charAt(j+ push);
                System.out.print(k[i][j] + " ");
            }
            System.out.println();
            push = push + 4;
        }
    }
}

输入为: abcdefghijklm

输出是:

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

所以我想要的是,如果我输入: abcdefghijklm 我想要这个输出:

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

2 个答案:

答案 0 :(得分:2)

要获得所需的输出,您需要在填充后打印矩阵(您还必须以不同的方式循环它)。现在,您将每个字符添加到矩阵并立即打印,因此您将以与输入字符串相同的顺序打印它(带有额外的换行符)。

所以你想要这样的东西:

for(int i = 0; i < k.length; i++) {
    for(int j = 0; j < k[i].length; j++) {
        k[i][j] = text.charAt(j+ push);
    }
    push = push + 4;
}

for(int i = 0; i < k.length; i++) {
    for(int j = 0; j < k[i].length; j++) {
        System.out.print(k[j][i]+" ");
    }
    System.out.println();
}

答案 1 :(得分:1)

您只需要对矩阵进行transpose操作即可。只需使用两个嵌套循环,然后切换索引。即,而不是k[i][j],请使用k[j][i]