我正在尝试使用循环创建一个看起来像这样的右侧三角形:
+
/|
/ |
/ |
/ |
+----+
程序需要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循环的一些组合,但到目前为止,它经常打印出一个形状混乱而不是实际的三角形。
答案 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("+");
}