java循环产生随机数并筛选30岁以上且40岁以下的年龄

java循环产生随机数并筛选30岁以上且40岁以下的年龄
 public static void main(String[] args) {
        int age = (int) (1 + Math.random() * (120 - 1 + 1));
        int i = 1;
        while (age >= 30 && age <= 40) {
            age = (int) (1 + Math.random() * (120 - 1 + 1));
            i++;
        }
        System.out.println(age + " , " + i);
    }

错误输出:14, 1 (第一个数为1到120的任意整数)。

循环的逻辑写错了。

public class Main {
    public static void main(String[] args) {
        int age = (int) (1 + Math.random() * (120 - 1 + 1));
        int i = 1;
        while (age <30 || age> 40) {
            age = (int) (1 + Math.random() * (120 - 1 + 1));
            i++;
        }
        System.out.println(age + " , " + i);
    }
}

img

这么写代码,当有一个age不在30和40之间时,循环就结束了。而且第2行生成的age如果不在30到40之间,while循环根本不会执行。
参考如下代码(代码功能:生成100个随机数,并输入所有在30到40之间的数)

    public static void main(String[] args) {
        int age;
        int i = 1;
        //生成100个随机数,这个100根据你的需要调整
        while (i<=100) {
            age = (int) (1 + Math.random() * (120 - 1 + 1));
            if(age >= 30 && age <= 40)
                System.out.println(age + " , " + i);
            i++;
        }
        

    }

age >= 30 && age <= 40 ,如果age小于30或者大于40不就直接结束了

java循环产生随机数并筛选30岁以上且40岁以下的年龄

    public static void main(String[] args) {
        int i = 0, age;
        do {
            age =(int) (1 + Math.random() * (120 - 1 + 1));
            i++;
        } while (!(age >= 30 && age <= 40));
        System.out.println(age + " , " + i);
    }
您好,我是有问必答小助手,您的问题已经有小伙伴帮您解答,感谢您对有问必答的支持与关注!
PS:问答VIP年卡 【限时加赠:IT技术图书免费领】,了解详情>>> https://vip.csdn.net/askvip?utm_source=1146287632