2015-01-31 5 views
2

저는 Java를 처음 접했을 때 별표를 사용하여 채워지지 않은 다이아몬드를 인쇄하려고합니다. 다이아몬드의 높이는 사용자 입력을 기반으로해야합니다. 내 코드는 현재 사용자 입력에 따라 채워진 다이아몬드를 인쇄하지만 채워지지 않은 것을 인쇄하는 방법을 알 수는 없습니다. 내가 루프 중 하나를 바꿀 때마다 다른 것을 엉망으로 만든다. 모든 도움을 주시면 감사하겠습니다!Java - 중첩 된 for 루프를 사용하여 채워지지 않은 다이아몬드 인쇄

public static void diamond(){ 
    int i = 0; 
    int j = 0; 
    int k = 0; 
    int height = 0; 

    Scanner in = new Scanner(System.in); 
    System.out.println("How tall do you want the diamond to be: "); 
    height = in.nextInt(); 

    for (k = 1; k <= (height + 1)/2; k++) { 
     for (i = 0; i < height - k; i++) { 
      System.out.print(" "); 
     } 
     for (j = 0; j < k; j++) { 
      System.out.print("* "); 
     } 
     System.out.println(""); 
    } 

    for (k = ((height + 1)/2); k < height; k++) { 
     for (i = 1; i < k; i++) { 
      System.out.print(" "); 
     } 
     for (j = 0; j < height - k; j++) { 
      System.out.print(" *"); 
     } 
     System.out.println(""); 
    } 
} 

답변

4

여기에는 채워지지 않은 다이아몬드를 인쇄하기 위해 수정 된 방법이 있습니다. if 조건이 내부 루프에 추가되었습니다.

public static void diamond() { 
    int i = 0; 
    int j = 0; 
    int k = 0; 
    int height = 0; 

    Scanner in = new Scanner(System.in); 
    System.out.println("How tall do you want the diamond to be: "); 
    height = in.nextInt(); 

    for (k = 1; k <= (height + 1)/2; k++) { 
     for (i = 0; i < height - k; i++) { 
      System.out.print(" "); 
     } 
     for (j = 0; j < k; j++) { 
      if (j == 0 || j == (k - 1)) { 
       System.out.print("* "); 
      } else { 
       System.out.print(" "); 
      } 
     } 
     System.out.println(""); 
    } 

    for (k = ((height + 1)/2); k < height; k++) { 
     for (i = 1; i < k; i++) { 
      System.out.print(" "); 
     } 
     for (j = 0; j < height - k; j++) { 
      if (j == 0 || j == (height - k - 1)) { 
       System.out.print(" *"); 
      } else { 
       System.out.print(" "); 
      } 
     } 
     System.out.println(""); 
    } 
} 
관련 문제