【发布时间】:2015-11-05 05:33:27
【问题描述】:
我写了一些会打印钻石的代码
static void printDiamond(int size) {
for (int i = 0; i < size; i++) {
for (int a = 0; a < (size - (i + 1)); a++) {
System.out.print(" ");
}
System.out.print("X");
for (int b = 0; b < (i * 2); b++) {
System.out.print(" ");
}
System.out.print("X");
System.out.println();
}
for (int i = size-1; i >= 0; i--) {
for (int a = 0; a < (size - (i + 1)); a++) {
System.out.print(" ");
}
System.out.print("X");
for (int b = 0; b < (i * 2); b++) {
System.out.print(" ");
}
System.out.print("X");
System.out.println();
}
}
我遇到的钻石问题是,无论我输入什么,它都会打印双倍。因此,如果用户为钻石输入 6,它应该如下所示:
XX
X X
X X
X X
X X
XX
使用我的代码,如果用户输入 5,它会打印出以下内容:
XX
X X
X X
X X
X X
X X
X X
X X
X X
XX
它不是打印出 5 行,而是打印出 10。如果我输入 3,它将打印出 6 行而不是 3。似乎对于我的钻石来说,它正在输出它从用户那里收到的数字,但是然后打印出该数量乘以 2。有没有办法我可以将 printDiamond 方法输出的大小减半,使其具有正确的行数?
【问题讨论】:
-
你应该重新检查你的循环条件——特别是外循环。
-
@mike1319 一点建议。您不需要在问题中包含框代码或输出。问题越简洁越好。
-
@MichaelQuatrani 谢谢你的建议。我编辑了代码的方框部分,所以问题更简洁。