3

我正在尝试用循环制作一个在 Java 中看起来像这样的右侧三角形:

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

该程序需要将 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 循环的组合,但到目前为止,它经常打印出乱七八糟的形状而不是实际的三角形。

4

3 回答 3

2

你快到了:在你 print 的嵌套循环中'/',替换printlnprint. x-j添加第二个打印空格的循环,然后 print |+最后,在进入第一个循环之前添加一个要打印的语句。就是这样!

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

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

这样,您就可以将多个循环“淹没”到一次调用printN. 例如,

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

会成为

printN(" ", x-i);
于 2013-05-09T03:12:40.790 回答
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("+");
}
于 2013-05-09T03:20:38.343 回答
0

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

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

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

于 2013-05-09T03:13:38.737 回答