Java for循环制作星号矩阵

Java for loop making asterisk matrix

我目前正在尝试使用 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 循环,我有些不明白。有人能给我指出正确的方向吗:)

将内部循环更改为标准的 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();
}

试试这个

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();
}

第一项工作是离开键盘思考问题。原来star的条件是"current row >= current column".

使用

实施
for (int row = 1; row <= 10; ++row){
    for (int col = 1; col <= 10; ++col){
        System.out.print( row >= col ? "*" : " ");
    }
    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("");

     }

所以我试着分析你的代码,我发现的是

你的错误:

在这里我们看到所需的输出和您的输出与输出行号 2 不同,我发现的原因是 if 条件 star >= row 所以让我们迭代 star 的循环row2:

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 returns false 这将是此迭代的 star = 1 场景。
类似地,对于 row = 3,条件将为真,除非 star 值变为 <=2。所以问题是你在开始时打印 * 并且 </code> 的条件出现在打印 <code>*.

之后

可能的解决方案:

基本上你需要在开头打印 </code>,而不是在结尾。因此,在相同条件下,您可能需要反转列的迭代方法以反转打印顺序。如果您更改循环的顺序,您就可以完成这项工作。让我们为 <code>2:

row 值迭代循环
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

所以在这种情况下,</code> 将首先打印,<code>* 将稍后打印。

更新代码:

我已经更新了你的代码。看看 inner for loop.

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();
}

希望这对您有所帮助:)