Java for循环生成星号矩阵



我目前正试图使这种形式与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所以让我们为row2:

迭代star循环
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("");
     }

相关内容

  • 没有找到相关文章

最新更新