2013-10-11 40 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)。