2014-01-06 4 views
-1

문자열 출력 = 행렬로 변환 차원 캐릭터 2 :[]는 I 코드 작성한

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

더 구체적으로 말하면 루프에서 print 문을 꺼내서'System.out.print (k [j] [i] + "");'와 같은 것을 사용하는 다른 중첩 루프를 만들 수 있습니다 (역 색인). – Ken

+0

흠, 나는 understund하지 않아? 이거 시험 해봐? – m2pixel

+0

은 응답 코드 – Ken

1

당신은 단순히 당신의 매트릭스에 대한 transpose 작업을해야합니다

그래서 당신이 뭔가를 할 수 있습니다. 두 개의 중첩 루프를 사용하고 인덱스를 전환하십시오. 즉 k[i][j] 대신 k[j][i]을 사용하십시오.

+0

및 출력은 : 그런데 이런 식으로 인쇄하려는 넌 루프 밖으로 프린트 명령문을 취할 필요 B C g의 K D H 리터 m – m2pixel

+1

F 조. 켄의 대답은 이미 이렇게 정교합니다 :-) –