我必须生成以下模式:
我到目前为止:
模式中有一些重复的行也是一个问题,但是目前没有很高的优先级。 我的问题是要在水平方向上重复这种模式。
这是我到目前为止的代码:
public class Pattern {
public static void main(String[] args) {
final char indentChar = ' ';
final char fillChar = '+';
int fillWidth;
int indentWidth;
int triangleBaseLength = 9;
int triangleHeight = (triangleBaseLength / 2) + 1;
int horizontalRepeats = 5;
int verticalRepeats = 2;
for (int y = 1; y <= verticalRepeats; y++) { //vertical Repeats
for (int i = 0; i < triangleHeight; i++) { //Top downwards
for (indentWidth = 0; indentWidth < triangleHeight * 0 + i; indentWidth++) {
System.out.print(indentChar);
}
for (fillWidth = 0; fillWidth < (triangleBaseLength - i * 2); fillWidth++) {
System.out.print(fillChar);
}
System.out.println();
}
for (int i = 1; i <= triangleHeight; i++) { //Top upwards
for (indentWidth = 0; indentWidth < triangleHeight * 1 - i; indentWidth++) {
System.out.print(indentChar);
}
for (fillWidth = 0; fillWidth < (i * 2 - 1); fillWidth++) {
System.out.print(fillChar);
}
System.out.println(); //vertical Repeats
}
}
}
为了生成水平重复,我尝试使用“(int y = 1; y <= horizontalRepeats; y ++)”和“ System.out.print();”进行相同的操作但它不起作用。 有一个简单的解决方案吗?我不允许使用比这更高级的东西。
答案 0 :(得分:0)
首先,您还应该在+
符号的右侧包括空白。这意味着您不必添加2个for
循环来打印出每一行,而必须添加另一个for
循环,该循环与第一个for
循环相同。
第二,您需要包装这3个for
循环,以便另一个for
循环才能水平重复。
for (int i = 0; i < triangleHeight; i++) { //Top downwards
for (int h = 0; h < horizontalRepeats; h++) {
for (indentWidth = 0; indentWidth < triangleHeight * 0 + i; indentWidth++) {
System.out.print(indentChar);
}
for (fillWidth = 0; fillWidth < (triangleBaseLength - i * 2); fillWidth++) {
System.out.print(fillChar);
}
// Repeat the first for loop...
for (indentWidth = 0; indentWidth < triangleHeight * 0 + i; indentWidth++) {
System.out.print(indentChar);
}
}
System.out.println();
}
但是,这不能解决多余的行的问题。我会让你自己弄清楚。