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

Jay*_*reh 2 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 --;
        }       
    }    
}
Run Code Online (Sandbox Code Playgroud)

Jea*_*ard 6

问题是你使用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)

这更简单.