我目前正试图使这种形式与Java中的for循环:
**********
*********
********
*******
******
*****
****
***
**
*
我的代码是这样的:
for (int row = 1; row <= 10; row++) {
for (int star = 10; star >= 1; star--) {
if (star >= row) {
System.out.print("*");
} else {
System.out.print(" ");
}
}
System.out.println();
}
输出如下所示:
**********
*********
********
*******
******
*****
****
***
**
*
我似乎想不出如何把空格放在星号前面。我试过切换循环条件,但它只是给我相同的结果。这些for循环有一些我不明白的地方。谁能给我指个方向吗?
所以我试着分析你的代码,我发现的是
你的错误:
在这里我们看到期望的输出和你的输出变得不同于输出行2我发现原因是if
条件是star >= row
所以让我们为row
值2
:
if(star >= row) //when star = 10 - condition true. * will be the output
if(star >= row) //when star = 9 - condition true. * will be the output
if(star >= row) //when star = 8 - condition true. * will be the output
所以*
将是输出,直到star>=row
返回false,这将是star = 1
的场景。
类似地,对于row = 3
,条件将为真,除非star
的值变为<=2
。因此,问题是您在开始时打印*
,而的条件出现在打印
row
之后。
可能的解决方案:
基本上你需要在开头打印,而不是在结尾。因此,在相同的条件下,您可能需要反转列的迭代方法,以便反转打印顺序。如果你改变循环的顺序,你就能完成这项工作。让我们在循环中迭代
inner for loop
的*
值:
if(star >= row) //when star = 1 - condition false. ` ` will be the output
if(star >= row) //when star = 2 - condition true. * will be the output
if(star >= row) //when star = 8 - condition true. * will be the output
所以在这种情况下,将首先打印,CC_18将稍后打印。
更新代码:
我已经更新了你的代码请看CC_19 .
for (int row = 1; row <= 10; row++)
{
for (int star = 1; star <= 10; star++)
{
if (star >= row)
{
System.out.print("*");
}
else
{
System.out.print(" ");
}
}
System.out.println();
}
希望这对你有帮助
将内循环改为标准的1到10循环。
for (int row = 1; row <= 10; row++) {
for (int star = 1; star <= 10; star++) {
if (star >= row) {
System.out.print("*");
} else {
System.out.print(" ");
}
}
System.out.println();
}
第一件事是离开键盘,仔细思考问题。事实证明,星号的条件是"当前行>=当前列"。
使用
实现for (int row = 1; row <= 10; ++row){
for (int col = 1; col <= 10; ++col){
System.out.print( row >= col ? "*" : " ");
}
System.out.println();
}
试试这个
int size = 10;
for (int row = 0; row < size; row++)
{
for (int i = 0; i < row; i++)
{
System.out.print(" ");
}
for (int i = size - row; i > 0; i--)
{
System.out.print("*");
}
System.out.println();
}
for(int i = 0 ; i < 10 ; i++){
for(int j = 0 ; j < 10 ; j++){
if(j >= i){
System.out.print("*");
}else{
System.out.print(" ");
}
}
System.out.println("");
}