2014-09-07 5 views
0

중첩 for 루프를 사용하여 별표가 표시된 다이아몬드를 표시하려고합니다.Java에서 중첩 for 루프가있는 다이아몬드

public class Diamond { 

     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(); 
      }// end loop 

      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(); 
      }// end loop 
     } 

    } 

이 가까이하지만 난 두 번 9 별표의 라인을 인쇄하고 있습니다 :

여기에 지금까지 내 코드입니다.

7 개의 별표와 2 개의 공백에서 출력을 시작하려면 두 번째 for 루프를 어떻게 조정할 수 있습니까 ??

도움 주셔서 감사합니다.

+0

7 개의 별을 인쇄 할 때 어떤 값이 두 번째 루프에 'i'가 있습니까? 어쩌면 9 번의 인쇄를 시작하는 '1'대신이 값에서 시작하는 것이 가치가 있을까요? – Pshemo

답변

1

그냥 < 예를 들어, 사용

내가 처음 루프를 변경 for (int i = 1; i < size; i += 2)

그냥 재미 ... 내 코드를 시도 :)에 대한

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(); 
    }// end loop 

    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(); 
    }// end loop 
0

이 코드를 봅니다 : 루프 제거 = 마크 처음에

for (int i = 1; i <= size-1; i += 2) { 

int size = 9; 

    for (int i = 1; i <= size-1; 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(); 
    }// end loop 

    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(); 
    }// end loop 
} 
0
 int n = 9; 
     for(int i =0;i<n;i++){ 
      for(int k=n-1;k>i;k--){ 
       System.out.print(" "); 
      } 
      for(int j=0;j<2*i+1;j++){ 
       System.out.print("*"); 
      } 
      System.out.println(""); 
     } 

     for(int j=0;j<n-1;j++){ 

      for(int k=j;k>=0;k--){ 
       System.out.print(" "); 
      } 

      for(int i=2*(n-j-1)-1;i>0;i--){ 
       System.out.print("*"); 
      } 

      System.out.println(""); 

     } 
0

전체 코드 ....

public class Diamond { 

    static String sp(int n) { 
     String s = ""; 
     for (int i = 0; i < n; i++) 
      s += " "; 
     return s; 
    } 
    static String st(int n) { 
     String s = ""; 
     for (int i = 0; i < n; i++) 
      s += "*"; 
     return s; 
    } 
    static int abs(int n) { 
     if (n < 0) 
      return -n; 
     else 
      return n; 
    } 

    public static void main(String[] args) { 

     int size = 9; 
     for (int i = 0; i < size; i++) { 
      System.out.println(sp(abs((size-1)/2-i)) + 
           st(abs(9-2*((i+5)%(size)))) + 
           sp(abs((size-1)/2-i))); 
     } 
    } 
} 
+0

잘 작동합니다! 질문은 내가 중첩 된 for 루프를 사용하도록 요청하고 있었으므로 원래 코드를 사용해야했습니다. – Mac

0

이 코드를 사용해보십시오. Math.abs를 사용하면 훨씬 간단 해집니다.

import java.util.Scanner; 

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

Scanner sc = new Scanner(System.in); 

while (true) { 

System.out.println("Let's Creat Diamonds"); 
System.out.println("If number increases Diamonds gets bigger. Please input number lager than 1 : "); 

int user_input = sc.nextInt(); //gets user's input 
System.out.println(""); 

int x = user_input; 
int front_space = -5; 

for (int i = 0; i < 2 * user_input + 1; i++) { 
    for (int a = front_space; a < Math.abs(i - user_input); a++) { 
     System.out.print(" ");    } 

    if (i < user_input + 1) { 
     for (int b = 0; b < 2 * i + 1; b++) { 
      System.out.print("* "); 
     } 

    } else if (i > user_input) { 
     for (int c = 0; c < 2 * x - 1; c++) { 
      System.out.print("* "); 
     } 
     x--; 
    } 
    System.out.print('\n'); 
} 

System.out.println("\nRun Again? 1 = Run, 2 = Exit : "); 

int restart = sc.nextInt(); 
System.out.println(""); 

if (restart == 2) { 
    System.out.println("Exit the Program."); 
    System.exit(0); 
    sc.close(); 
    } 
    } 
    } 
} 
관련 문제