2012-09-22 2 views
2

내 Java 클래스의 경우 연습 중 하나는 중첩 된 for 루프를 사용하여 다이아몬드를 인쇄하는 것입니다. 연습에서는 중첩 된 for 루프를 사용하면서 최소 출력 양을 사용해야합니다. 다른 규정은 각 출력이 단일 공백, 단일 별표 또는 단일 최종 줄 문과 같이 1 문자 만 출력 할 수 있다는 것입니다.중첩 된 루프가있는 다이아몬드 인쇄

필자는 끝 냈지만 더 쉬운 방법이 있는지 궁금 해서요. 누군가 내 코드를 정리하는 데 도움이된다면 궁금합니다. 그냥 필요한 것 이상으로 글쓰기가 끝난 것처럼 보입니다. 어떤 도움이나 조언도 대단히 감사하겠습니다. :)

다음

최종 결과는 같이 할 필요가 무엇 : 여기

은 내 코드입니다 :

public class Diamond 
{ 
    public static void main(String args[]) 
    { 
     int b = 11; // secondary asterisk loop counter 
     int ac = 2; // asterisk count 
     int sc = 5; // space count 
     int elc = 2; // end line count 
     int slc = 1; // space loop count 
     int sslc = 1; // secondary space loop count 


     for(int e = 1; e < elc && elc < 12;e++) 
     { 
      if(elc <= 6) 
      { 
       for(int a = 1; a < ac; a++) 
       { 
         for(;sc <= 5 && sc > 0; sc--) 
         { 
          System.out.print(" "); 
         } 

         System.out.print("*"); 
       } 

       ac += 2; 
       sc = 5 - slc; 
       slc += 1; 
      } 

      else if (elc > 6) 
      { 
       ac -= 2; 
       sc = 1; 


       for (; b < ac ; b++) 
       { 

        for(;sc <= sslc && sc > -2; sc++) 
        { 
         System.out.print(" "); 
        } 

        System.out.print("*"); 
       } 

       b = 1; 
       sslc += 1; 

      } 
      if(elc != 6) 
      { 
       System.out.println(); 
      } 

      elc += 1; 
     } 
    } 
} 

답변

0

당신은 같이 다이아몬드의 네 모서리를 작성하려고 할 수 있습니다 방정식 (x + y = 4, xy = 2 ... 예). 그런 다음 격자의 각 셀을 통해 중첩 루프를 만들어 공간이나 별을 인쇄해야하는지 확인하십시오. 시험은

처럼한다면 F1 (x, y)에 또는 F2 (X, Y) 또는 F3 (x, y)에 또는 F4 (X, Y) 잉크 '*'다른 프린트 '

여기서 f1, f2, f3, f4는 4 개의 대각선에 대한 방정식입니다.

인쇄 할 문자 수를 최소화해야하는 경우 배열을 사용하여 준비한 다음 후행 공백을 무시하십시오. 또는 임의의 ad-hoc 규칙을 사용하십시오 (예 : 1 행과 마지막 행을 제외한 모든 행의 2 개의 별과 같이 ...)

0
public class ASultan 
{ 
    public static void main(String[] args) { 

    int size = 9; 

    for (int i = 1; i < size; i += 2) { 
     for (int k = size; k >= i; k -= 2) { 
      System.out.print(" "); 
     } 
     for (int j = 1; j <= i; j++) { 
      System.out.print("*"); 
     } 
     System.out.println(); 
    } 

    for (int i = 1; i <= size; i += 2) { 
     for (int k = 1; k <= i; k += 2) { 
      System.out.print(" "); 
     } 
     for (int j = size; j >= i; j--) { 
      System.out.print("*"); 
     } 
     System.out.println(); 
    } 

    } 
}