我需要这样做:
*****
****
***
**
*
我有这段代码:
for (int i=0; i<5; i++)
{
for (int j=5; j>i; j--)
{
System.out.print("*");
}
System.out.println("");
输出:
*****
****
***
**
*
我无法弄清楚如何实现这些空间。任何帮助表示赞赏。
答案 0 :(得分:6)
您需要使用两个for循环:一个用于空格数,另一个用于*
的数量:
for (int i = 0; i < 5; i++) {
for (int j = 0; j < i; j++) {
System.out.print(" ");
}
for (int j = i; j < 5; j++) {
System.out.print("*");
}
System.out.println();
}
Java 8解决方案:
IntStream.range(0, 5).forEach(i -> {
IntStream.range(0, i).forEach(j -> System.out.print(" "));
IntStream.range(i, 5).forEach(j -> System.out.print("*"));
System.out.println();
});
答案 1 :(得分:2)
如果你真的想让那些给你的作业评分的人惊叹的话,这是一个比其他答案少一个循环的解决方案:
for (int y = 0; y < 5; y++) {
for (int x = 0; x < 5; x++) {
System.out.print((x >= y) ? "*" : " ");
}
System.out.println();
}
答案 2 :(得分:1)
在每行开始之前打印k
个空格。
要解决这类问题,如果你将其分解并观察模式将会很容易。
***** 0 space
**** 1 space
*** 2 spaces
** 3 spaces
* 4 spaces
注意到这种模式后,你会问自己能否打印出来?
0*****
1****
2***
3**
4*
我们看到这个数字类似于每一行的开头。因此我们可以利用变量i。 (你的外循环计数器),我们有..
for (int i=0; i<5; i++){
System.out.println(i);
for (int j=5; j>i; j--){
System.out.print("*");
}
System.out.println("");
}
现在,您只需将每行开头的数字转换为空格数即可。
for (int i=0; i<5; i++){
for(int k=0; k<i; k++) //using i to control number of spaces
System.out.println(" ");
for (int j=5; j>i; j--){
System.out.print("*");
}
System.out.println("");
}
答案 3 :(得分:0)
int count = 6;
for(int i=0; i<=count; i++) {
for(int j=0; j<i; j++) {
System.out.print(" ");
}
for (int j = 0; j <= (count - i); j ++) {
System.out.print("*");
}
System.out.println();
}
您可以将价值传递给计数,它的效果非常好。