java for循环不起作用

问题描述 投票:7回答:8

我希望这不是一个愚蠢的问题,但我已经找到了我能找到的每个例子,看起来我仍然没有这个代码,但它仍然没有工作......我输入一个数字然后继续下一个代码行而不是循环。我正在使用它来填充用户输入数字的数组。我感谢任何帮助,谢谢。

for(i=0; i<9; i++);
{  
    System.out.println ("Please enter a number:");  
    Num[i] = keyboard.nextDouble();  
    Sum += Num[i];      
    Product *= Num[i];      
}   
java syntax for-loop iteration
8个回答
17
投票

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];      
} 

这将是一个例子,为什么在可能的情况下限制变量范围是一种好的做法。


7
投票

注意';'在for的结尾(i = 0; i <9; i ++); ? ^ _ ^


4
投票

从for循环行中删除最后一个字符分号............


4
投票

为了避免将来出现这种错误,你应该总是在for循环中使用一个新变量。代替:

for (i = 0; ...

for (int i = 0; ...

这样就会出现编译时错误,因为变量i不在下一个块的范围内。


3
投票

在第一行的末尾不应该有分号。它表示你的循环是空的。


0
投票

答案已经给出了,但我想补充一点,如果你使用的是IDE *,可能会对这些空话和其他易于制作,容易被忽视的错误类型的警告(代替在例如条件下进行比较)。


0
投票

只是让你知道。这样的事情:

for(;;)
  ;

应该把你的程序送到忙碌的等待中。在早期发生在我身上。 :)


0
投票

在“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”循环之间感到困惑,这种情况发生了。我也是,当我是初学者时,过去常常对这些事情感到困惑。

© www.soinside.com 2019 - 2024. All rights reserved.