我的任务是编写一个程序,显示用户输入的星号数量,然后将其平方。因此,如果我输入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();
答案 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);
}