在For循环中使用For循环需要帮助

时间:2014-10-28 00:26:16

标签: java for-loop

我的任务是编写一个程序,显示用户输入的星号数量,然后将其平方。因此,如果我输入6,计算机将显示36。

我正在使用 Java 进行编程。

这就是我应该得到的:

Please enter the number of stars you would like(between 1 and 20):   4
* * * *
* * * *
* * * *
* * * *

每当我运行程序时,打印请输入你想要的星数(1到20之间):,它显示我输入的数字......没有任何反应。 BLANK。

这是我的代码。我不确定我做错了什么:

Scanner input = new Scanner(System.in);
    String star = "*";



    System.out.print("Please enter the number of stars you would like(between 1 and 20):\n>> ");
    int numStars = input.nextInt();

    for(int squared = numStars*numStars; squared < numStars+1; squared++)
    {
        for(int stop = 0; stop < numStars; stop++)
      {
            System.out.print(star+" ");
      }
        System.out.println(star+" ");
    }

    System.out.println();

7 个答案:

答案 0 :(得分:2)

假设numStars为5.这是外for循环的作用:

for(int squared = numStars*numStars; squared < numStars+1; squared++)

第一个表达式是在循环开始时发生的赋值。因此,循环首先分配squares = 25

第二个表达式告诉程序何时停止循环。或者,实际上,何时保持循环。你编写循环的方式,只要squares < 6就会继续。一旦squares >= 6,它就会停止。由于squares从25开始,这意味着它会立即停止,并且循环中的任何内容都不会被执行。

您希望首先将squared设置为循环开头的0或1,而不是numStars * numStars

此外,变量名称不应为squared;这表明对循环的误解。 每次程序通过外部循环时,它都会显示一行。这就是外循环的目的。因此,调用变量rowNumber而不是squared应该会使事情变得更加清晰。

答案 1 :(得分:1)

由于squared < numStars+1不是真的,因此未输入您的for循环。

int numStars = 4;
String star = "*";
for (int i = 0; i < numStars; i++) {
    if (i != 0)
        System.out.println();
    for (int j = 0; j < numStars; j++) {
        if (j != 0)
            System.out.print(' ');
        System.out.print(star);
    }
}

输出

* * * *
* * * *
* * * *
* * * *

答案 2 :(得分:0)

我不明白你试图做什么,但是,一个解决方案可以

for(int i = 0; i< numStars; i++)
    {
        for(int y = 0; y< numStars; y++)
      {
        System.out.print(star+" ");
      }
        System.out.println("");
    }

    System.out.println();

答案 3 :(得分:0)

我认为你在第一个for循环中混淆了你的陈述。

平方永远不会小于numStars + 1.

如果numStars为3,则平方将为9且不小于4.因此它不执行循环。

你可以通过在第一个for循环上添加一个断点来看到这一点。

也永远不要在循环或条件中分配这样的变量,在外面进行赋值更具可读性。

答案 4 :(得分:0)

你想绘制一个正方形(使用你的例子)6行6列。

你想要两个循环,都计算到星数(忘记计算方块)

第一个循环是控制行,第二个循环控制列。

for (int rows = 0; rows < numStars; rows++) {
    for (int cols = 0; cols < numStars; cols++) {
        System.out.print("* ");
    }
    System.out.println("");
}

答案 5 :(得分:0)

这是另一种解决方案,使用一个loop

int input =4;
int square=input*input;
String star = "*";
for (int i = 0; i < square; i++) {
    if (i %input== 0) {
        System.out.println();
    }
    System.out.print(star + " ");
}

答案 6 :(得分:0)

简单回答需要O(2n)

int numStars = 4;
String star = "*";
for (int i = 1; i < numStars; i++) {
    star += " *";
}
for (int i = 0; i < numStars; i++) {
    System.out.println(star);
}