2015-08-31 76 views
3

所以我需要有用戶輸入的高度和輸出以下形狀嵌套循環的程序:添加炭多次多項

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


我的想法得到這個工作是使用一個char作爲黑色空間,並對應於我給定高度時需要的正確形狀的多少空間。但是,我無法呼籲。如何製作字符,在同一行上運行一定次數。我希望它符合我在第二個循環中的'x'值。


import java.util.Scanner; 
public class TrueArt 
{ 
public static void main(String[] args) 
{ 
    Scanner sc = new Scanner (System.in); 
    int height; 
    char star = '*'; 


    // Gets preferred height 
    System.out.println("Enter the height you want the masterpiece to be: "); 
    height = sc.nextInt(); 

    for (int i=0; height > i; i--) 
    { 
     for (int x = 0; x < height; i++) 
     { 
      1 + x * 2 
     } 
    } 
} 

} 

感謝您的任何建議提前!

+1

上面的代碼是僞代碼嗎?你在內循環中的數學語句是不正確的 – andrewdleach

+2

http://stackoverflow.com/questions/14047583/printing-s-as-triangles-in-java –

+0

你有一個無限循環大於0的輸入高度。 (int i = 0; height> i; i--) –

回答

3

要獲得您想要的輸出,您可以使用此金字塔算法。

public static void main(String[] args) { 

Scanner s = new Scanner(System.in); 
int height = s.nextInt(); 
char star = '*'; 

for(int i = 0;i < height; i++) { 

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

    for(int k = 0; k <= i; k++) { 
     System.out.print(star + " "); 
    } 
    System.out.println(); 
} 

} 

你將不得不改變這個有點得到你想要的特定形狀/風格金字塔但這事關的工作,學習的目的。

+0

@Mena感謝您的更正! –

+0

不客氣:) – Mena

+0

好的,所以在你的幫助下,我得到了它的工作。爲了確保我理解這裏發生了什麼:用戶輸入一個值。然後,該值進入循環,在那裏它將運行用戶輸入的數字。然後在第二個循環中,通過從高度中減去i來找出需要輸出多少個空格。在最後一個循環中,它會打印正確數量的恆星。這看起來很有意義。感謝大家的評論和答覆。 – ChargePositive

0

您的for loop有無限循環問題。儘量避免這種情況。

順便說一句,另一個金字塔算法。乾杯!

for (int i=height; i > 0; i--) 
{ 
    if(i!=1) { 
     for(int y = i-1; y>0; y--) { 
      System.out.print(" "); 
     } 
    } 

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

}