基本上我试图用这个程序做的是让系统生成一个随机数,然后将该数字分配给另一个变量.如果数字大于20,那么while循环将开始,直到变量的值(由随机数确定)小于20,然后结束程序.问题是,while循环似乎永远持续下去:(请帮助
这是代码:
package innocence;
import java.util.Scanner;
class GS1{
public static void main(String[]args){
int ranNum = (int)( Math.random()*25);
int num=ranNum;
System.out.println(num);
while(num > 20){
System.out.println("Not acceptable");
num= num --;
}
}
}
Run Code Online (Sandbox Code Playgroud)
问题是你使用postfix减量运算符:
num = num--;
Run Code Online (Sandbox Code Playgroud)
我链接的JLS指定了
后缀递减表达式的结果不是变量,而是值.
当调用在递减之前完成时,该调用只是重新分配num当前值,然后执行递减,这导致一个从未分配的值,因为您的变量已被分配.
您可以通过在循环中添加一个始终打印相同值的print语句来确认这一点.
System.out.println(num);
Run Code Online (Sandbox Code Playgroud)
每次重新循环时,num仍然具有前一个值.
你可以通过使用前缀减量运算符来解决这个问题:
num = --num;
Run Code Online (Sandbox Code Playgroud)
但你应该简单地使用:
num--;
Run Code Online (Sandbox Code Playgroud)
这更简单.
| 归档时间: |
|
| 查看次数: |
52 次 |
| 最近记录: |