我写了代码:
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
答案 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]
。