2013-09-24 102 views
-2

我試圖得出這樣的形式與Java: 對於n = 4:繪製黃金三角形式的Java

 ******* 
     *** *** 
     ** ** 
     *  * 

但所有我能得到的是:

對於n = 4:

 **** **** 
    *** *** 
    ** ** 
    * * 

下面是該代碼:

public class test1 { 
    public static void main(String[] args) { 
     int n; 
     System.out.print("Entrer n:"); 
     Scanner x = new Scanner(System.in); 
     n=x.nextInt(); 
     for(int i=0; i<n; i++) {  
      System.out.print("*"); 

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

      for(int k=0; k<n/2; k++) { 
       System.out.print(" "); 
      } 

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

      System.out.println(""); 
     } 
    } 
} 

有人可以幫助我,謝謝。

+2

你能提供通用規範?究竟是什麼?你對n = 1,2,3,5或6有什麼期望? – Cruncher

+0

n是三角形中對角線的數量 –

回答

3

如果我正確理解本說明書中,這應該這樣做:

int n = 4; 
    for(int i = 0; i < n ; i++) 
    { 
     for(int j = 0 ; j < n-i ; j++) 
     { 
      System.out.print("*"); 
     } 
     for(int j = 0 ; j < i*2-1 ; j++) 
     { 
      System.out.print(" "); 
     } 
     for(int j = i==0?1:0 ; j < n-i ; j++) 
     { 
      System.out.print("*"); 
     } 
     System.out.print("\n"); 
    } 

n = 1時:

* 

N = 4:

******* 
*** *** 
** ** 
*  * 

N = 6:

*********** 
***** ***** 
**** **** 
***  *** 
**  ** 
*   * 
+0

謝謝,這正是我所期待的,但是你能解釋一下你在最後一個循環中做了什麼,再次感謝。 –

+0

我假設你的意思是'int j = i == 0?1:0'這部分。這是一個三元陳述。 'i == 0?1:0'表示「如果'i'爲0,則表達式爲1,否則爲0」。這一點,是因爲在第一行,我們有'2(n-1)-1'*',而其他行有'2(n-1)'*'。這是在第一行中跳過明星的一種方式。你也可以把它放在第一個循環。 – Cruncher

+0

非常感謝。 –

0

你在循環的問題是在這部分

for(int k=0; k<n/2; k++) { 
    System.out.print(" "); 
} 

解決方案:

for (int k = 0; k < i*2; k++) { // solved 
    System.out.print(" "); 
} 

你需要的空間等於你行的索引數量,所以你的行索引是在「我「可變

在0線,你需要0位

在1號線需要2空間

在第2行需要4個空格

+1

你有試過嗎?第2行需要多少空間?它不是2. – Cruncher

+0

@Cruncher代碼現在是正確的,它是乘法而不是除法:D –