使用子串方法使用星号显示三角形形状

时间:2013-10-11 23:11:43

标签: java substring space shape

我希望我的程序呈三角形,中间有空格,如下图所示。 到目前为止,这是我的代码。

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

3 个答案:

答案 0 :(得分:0)

首先,你的内部for循环不起任何作用。它只运行一次。即使你删除它,逻辑也是一样的。

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

其次,我觉得你想做这样的事情:

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

确保你的字符串足够大于索引i

String space= "                                       ";

答案 1 :(得分: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("");

答案 2 :(得分:0)

使用类似String.format("%3s, "*")的内容,您可以定义宽度(此处为:3),从而定义输出的空白区域。如果你添加一些聪明的代码来定义每一行的宽度,你可以省去很多麻烦。

此外,重要的是要知道只有具有固定字母间距的字体才能起作用(如Currier New)。