用循环完成三角形

时间:2013-05-09 03:07:53

标签: java for-loop geometry

我正在尝试使用循环创建一个看起来像这样的右侧三角形:

     +
    /|
   / |
  /  |
 /   |
+----+

程序需要args作为int来确定每个三角形边的大小。现在这是我的代码:

public static void main(String[] args) {
    int x = Integer.parseInt(args[0]);
        for (int i = 0; i <= x; i++) {
            for (int j = x; j >= i; j--) {
                System.out.print(" ");
            }
            System.out.println("/");
        }

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

到目前为止的结果是

     /
    /
   /
  /
 +---+

那我该怎么做呢?我尝试了for循环的一些组合,但到目前为止,它经常打印出一个形状混乱而不是实际的三角形。

3 个答案:

答案 0 :(得分:2)

你几乎就在那里:在你打印'/'的嵌套循环中,将println替换为print。添加第二个循环,打印x-j个空格,然后打印|。最后,在进入第一个循环之前添加一个语句来打印+。就是这样!

要优化代码,请考虑编写辅助方法:

void printN(String str, int numTimes) {
    // Prints numTimes copies of str
}

通过这种方式,您可以将几个循环“fl”到printN的单个调用中。例如,

for (int j = x; j >= i; j--) {
    System.out.print(" ");
}

会变成

printN(" ", x-i);

答案 1 :(得分:0)

要为管道符号获取正确数量的空间,您需要再添加一个for循环。

在此for循环中,您将设置迭代计数器等于外部循环迭代计数器。然后在for循环中,您将使用String Builder。在每个循环中,您将为字符串构建器添加一个空格。然后,一旦添加了最后的空格,你将把/放在空格和|中最后。

对于一个明显的学校问题,这是我将给予的最多。学习的唯一方法就是做朋友。

答案 2 :(得分:0)

public static void main(String[] args) {
    int x = Integer.parseInt(args[0]);
    for (int j = x+1; j >= 0; j--) {
        System.out.print(" ");
    }
    System.out.println("+");
    for (int i = 0; i <= x; i++) {
        for (int j = x; j >= i; j--) {
            System.out.print(" ");
        }
        System.out.print("/");
        for (int k = 0; k < i; k++) {
            System.out.print(" ");
        }
        System.out.println("I");
    }

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