我如何在Java中打印以下内容:
5 55 555 55 5
只使用嵌套的for循环而不使用if语句。
到目前为止:
public static void main(String[] args) {
for(int i = 1; i < 6; i++) {
for(int k = 3; k > i; k--) {
System.out.print(" ");
}
for(int k = 3; k < i; k++) {
System.out.print(" ");
}
for(int j = i; j > 0; j--) {
System.out.print("5");
}
System.out.println();
}
}
正如您所看到的,我得到的空格正确但不是每行5
的数量。
我不知何故觉得必须有可能只为所有空间使用1 for循环?
答案 0 :(得分:0)
您希望打印的空格数减少到一个点然后再次开始增加,因此一个选项是使用abs()
:
int n = 3; // number of columns
for (int i = 0; i < 2 * n - 1; i++) {
int k = Math.abs(n - i - 1);
for (int j = 0; j < k; j++)
System.out.print(' ');
for (int j = 0; j < n - k; j++)
System.out.print('5');
System.out.println();
}
5 55 555 55 5
此处,k
是我们要打印的空格数(因此n-k
是5
的数量,如第二个{{1}}中所示 - 环)。当for
接近k
时,i
会减少,此时它会变为n - 1
。随着0
进一步增加,i
内的术语变得越来越消极,意味着其绝对值再次开始增长。
答案 1 :(得分:0)
您需要先将模式分为两部分:
上半场
5
55
555
下半部
55
5
在上半部分有3行要打印。分析每一行。
所以,如果我代表我的行,那么当我是1时,即行号。 1没有。要打印的空白区域是(3-i),即2和否。要打印的“5”是i,即1。
在类似的行上你可以打破完整的问题。 的解决方案:强>
class Main{
public static void main(String args[]) {
for(int i=1;i<=3;i++) {
for(int j=1;j<=(3-i);j++) {
System.out.print(" ");
}
for(int j=1;j<=i;j++) {
System.out.print("5");
}
System.out.println();
}
for(int i=1;i<3;i++) {
for(int j=1;j<=i;j++) {
System.out.print(" ");
}
for(int j=1;j<=(3-i);j++) {
System.out.print("5");
}
System.out.println();
}
}
}
答案 2 :(得分:0)
您可以将1 for循环用于行数,将第2个用于列数。这样你就需要使用4 for loop ..