减少随机数...逻辑错误

时间:2015-07-01 00:20:09

标签: java while-loop

基本上我要对这个程序做的是让系统生成一个随机数,然后将该数字分配给另一个变量。如果数字大于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 --;
        }       
    }    
}

1 个答案:

答案 0 :(得分:6)

问题是您使用postfix decrement operator

num = num--;

我链接的JLS指定

  

后缀减量表达式的结果不是变量,而是   价值。

该调用只是重新分配num当前值,因为分配在减量之前完成,然后执行减量,这导致一个从未分配的值,因为您的变量已经分配。

您可以通过在循环中添加一个始终打印相同值的print语句来确认这一点。

System.out.println(num);

每次重新循环时,num仍然具有前一个值。

您可以使用prefix decrement operator

解决此问题
num = --num;

但你应该只使用:

num--;

这更简单。