基本上我要对这个程序做的是让系统生成一个随机数,然后将该数字分配给另一个变量。如果数字大于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 --;
}
}
}
答案 0 :(得分:6)
问题是您使用postfix decrement operator:
num = num--;
我链接的JLS指定
后缀减量表达式的结果不是变量,而是 价值。
该调用只是重新分配num当前值,因为分配在减量之前完成,然后执行减量,这导致一个从未分配的值,因为您的变量已经分配。
您可以通过在循环中添加一个始终打印相同值的print语句来确认这一点。
System.out.println(num);
每次重新循环时,num仍然具有前一个值。
您可以使用prefix decrement operator:
解决此问题num = --num;
但你应该只使用:
num--;
这更简单。