2014-01-06 117 views
-1

我所编写的代码:二维串[]转换为字符串,并输出=矩阵

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

你的问题是什么? –

回答

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

更具体地说,你可以把打印语句从循环中取出,然后创建另一个嵌套循环,你可以使用'System.out.print(k [j] [i] +“”);'(注意反转指数)。 – Ken

+0

嗯,我不小心?有测试过吗? – m2pixel

+0

增加了一些代码到回应 – Ken

1

你只需要一个transpose操作你的矩阵。只需使用两个嵌套循环,然后切换索引。即代替k[i][j],使用k[j][i]

+0

和输出是: 一个 b˚F C Gķ d^h L M – m2pixel

+1

你需要花print语句跳出循环。肯的​​回答已经阐述了这一点:-) –

相关问题