2013-10-11 76 views
0

我希望我的程序呈三角形,空間在下面的照片之間。 繼承人我的代碼到目前爲止。顯示使用子字符串方式使用星號的三角形形狀

import java.util.Scanner; 
public class Triangle { 

    public static void main(String[] args) { 
     Scanner input = new Scanner(System.in); 
     String space= "   "; 
     space.replaceAll("", " "); 
     int i = input.nextInt(); 
     while (i > 0) { 
      for (int j = 0; j <1; j++) 
       System.out.print("*"+space.substring(0,0)+"*"); 
      System.out.println(); 
      i--; 
     } 
    } 

當我運行這段代碼的輸出是這樣的

** 

** 


** 

** 

** 

** 

** 

** 

** 

我想輸出看起來像這樣:

enter image description here

+0

你需要第一個還是第二個輸出? –

+0

第二個輸出 – mrorgon

回答

0

首先你內心的循環沒有按沒有任何目的。它只運行一次。即使你刪除它,邏輯也是一樣的。

for (int j = 0; j <1; j++) 

其次,我覺得你想要做這樣的事情:

System.out.print("*"+space.substring(i)+"*"); 

確保您的字符串比指數我

String space= "          "; 
+0

@G V所以,我應該刪除代碼行還是添加更多? – mrorgon

+0

刪除for循環。如上所述更改子字符串 –

+0

現在我的輸出不再是三角形了。 – mrorgon

0
Scanner input = new Scanner(System.in); 
    int i=input.nextInt(); 
    for (int j=0; j<(i-1); j++) 
     System.out.print(" "); 
    System.out.println("*"); 
    for (int j=1; j<(i-1); j++) 
    { 
     for (int k=0;k<(i-1-j); k++) 
      System.out.print(" "); 
     System.out.print("*"); 
     for (int k=0;k<(j*2)-1; k++) 
      System.out.print(" "); 
     System.out.println("*"); 
    } 
    for (int j=0; j<(i*2-1); j++) 
     System.out.print("*"); 
    System.out.println(""); 
0

使用類似足夠大您可以定義寬度(此處爲3),因此可以定義輸出的空白區域。如果你添加一些聰明的代碼來定義每一行的寬度,你可以節省很多頭痛的問題。

此外,重要的是要知道只有固定字母間距的字體才能做到這一點(如Currier New)。