我希望这不是一个愚蠢的问题,但我已经找到了我能找到的每个例子,看起来我仍然没有这个代码,但它仍然没有工作......我输入一个数字然后继续下一个代码行而不是循环。我正在使用它来填充用户输入数字的数组。我感谢任何帮助,谢谢。
for(i=0; i<9; i++);
{
System.out.println ("Please enter a number:");
Num[i] = keyboard.nextDouble();
Sum += Num[i];
Product *= Num[i];
}
for循环结束时的;
被视为空语句,相当于for循环的空块。编译器正在读取您的代码:
int i;
....
for(i=0; i<9; i++)
/* no-op */;
/* inline block with no relation to for-loop */
{
System.out.println ("Please enter a number:");
Num[i] = keyboard.nextDouble();
Sum += Num[i];
Product *= Num[i];
}
删除;
以获得您的预期行为。
如果你不需要循环之外的i
,你可以在for
语句中移动它的声明。
for(int i=0; i<9; i++)
{
// `i` is only usable here now
}
// `i` is now out of scope and not usable
当错误的分号;
存在时使用此语法会产生编译错误,该错误会提前警告您错误的;
。编译器会看到这个:
for(int i=0; i<9; i++)
/* no-op */;
/* inline block with no relation to for-loop */
{
System.out.println ("Please enter a number:");
Num[i] = keyboard.nextDouble(); // compile error now - `i` is out-of-scope
Sum += Num[i];
Product *= Num[i];
}
这将是一个例子,为什么在可能的情况下限制变量范围是一种好的做法。
注意';'在for的结尾(i = 0; i <9; i ++); ? ^ _ ^
从for循环行中删除最后一个字符分号............
为了避免将来出现这种错误,你应该总是在for循环中使用一个新变量。代替:
for (i = 0; ...
写
for (int i = 0; ...
这样就会出现编译时错误,因为变量i不在下一个块的范围内。
在第一行的末尾不应该有分号。它表示你的循环是空的。
答案已经给出了,但我想补充一点,如果你使用的是IDE *,可能会对这些空话和其他易于制作,容易被忽视的错误类型的警告(代替在例如条件下进行比较)。
只是让你知道。这样的事情:
for(;;)
;
应该把你的程序送到忙碌的等待中。在早期发生在我身上。 :)
在“for(....)”之后删除那个分号
for(i=0; i<9; i++); //<---------- over here
你不必在这里放一个分号。很可能你意识到这一点,它发生了。附加要点:“for”的语法是:
for(initializer; condition; change){
//code here
}
“while”的语法是:
while(condition without semi-colon){
//code here
}
“do-while”的语法是:
do{
//code here
}while(condition);//<---------------semi-colon here.
很可能你在“for”和“do-while”循环之间感到困惑,这种情况发生了。我也是,当我是初学者时,过去常常对这些事情感到困惑。