2016-03-25 24 views
-1

bu çıktıyı veren bir program yapmak istiyorum. Ancak, kodumda bir şey yanlış. yardım takdir edilecektir.Java Desen Programı Hata

class test 
{ 
    public static void main(int n) 
    { 
     for(int i=1;i<=n;i++) 
     { 
      for(int j=1;j<=i;j++) 
      { 
       System.out.print("*"); 
      } 
      for(int x=n;x>=1;x--) 
      { 
       System.out.print("*"); 
      } 
      System.out.println(); 
     } 
    } 
} 

cevap

2

Neredeyse oradasınız - dik bir üçgenin ardından dik bir üçgen olarak düşünün. Birincisinde, N sıraları, her satırın sayıları, N'den 1'e kadar, her satırın yıldız sayısı, N-1'den 1:

for (int i = 1; i <= n; ++i) { 
    for (int j = 0; j < i; ++j) { 
     System.out.print('*'); 
    } 
    System.out.println(); 
} 
for (int i = n - 1; i >= 1; --i) { 
    for (int j = 0; j < i; ++j) { 
     System.out.print('*'); 
    } 
    System.out.println(); 
} 

Bu, elbette, çok daha zarif kendi yöntemine her satırı oluşturur iç for döngü ayıklanması tarafından yapılmış olabilir:

private static void printRow (int i) { 
    for (int j = 0; j < i; ++j) { 
     System.out.print('*'); 
    } 
    System.out.println(); 
} 

private static void main (String[] args) { 
    for (int i = 1; i <= n; ++i) { 
     printRow(i); 
    } 
    for (int i = n - 1; i >= 1; --i) { 
     printRow(i); 
    } 
} 
+1

bunu yapmanın en kolay yoludur. Eğer her şeyi bir döngü içinde yapmak için _had_, bir sürü matematik ile yapabilirsiniz ... ama bunu daha küçük, daha kolay parçalara bölebildiğinizde bunu yapmak için bir sebep yok. – NAMS

+1

Wow, sen aynı yazdım, ben de gönderdiğim birkaç saniye önce yaptım ... hatta değişkenler, korkutucu boklar! Hem düşünmek için +1 – dambros