java中List集合

随机生成20个1-100的随机数把奇数和偶数分别放在两个集合中然后求奇数和偶数的和

参考代码如下:

public static void main(String[] args) {
    // 定义奇数和偶数两个集合
    List<Integer> jishu = new ArrayList<>();
    List<Integer> oushu = new ArrayList<>();
    Random random = new Random();
    // 随机生成201-100的随机数把奇数和偶数分别放在两个集合中
    for (int i = 0; i < 20; i++) {
        int num = random.nextInt(100) + 1;
        if (num % 2 == 0) {
            oushu.add(num);
        } else {
            jishu.add(num);
        }
    }
    // 求奇数和偶数的和
    int jishuSum = 0;
    int oushuSum = 0;
    for (Integer val : jishu) {
        jishuSum += val;
    }
    for (Integer val : oushu) {
        oushuSum += val;
    }
    System.out.println(jishuSum);
    System.out.println(oushuSum);
}

import org.springframework.util.CollectionUtils;
import java.util.ArrayList;
import java.util.List;

public class testtt {

    public static void main(String[] args) {
        int temp = 0;
        //奇数
        List odd = new ArrayList();
        //偶数
        List even = new ArrayList();
        for (int i = 0; i < 20; i++) {
            temp = (int) (Math.random() * 99 + 0);
            while (isExist(temp, odd, even)) {
                temp = (int) (Math.random() * 99 + 0);
            }
            if (temp % 2 == 0) {
                even.add(temp);
            } else {
                odd.add(temp);
            }
        }
        System.out.println(odd.toString());
        System.out.println(even.toString());
        //求和
        int oddSum = 0;
        int evenSum=0;
        if(!CollectionUtils.isEmpty(odd)){
            oddSum = odd.stream().mapToInt(x -> (int) x).sum();
        }
        if(!CollectionUtils.isEmpty(even)){
            evenSum = even.stream().mapToInt(x -> (int) x).sum();
        }
        System.out.println("奇数集合的和:"+oddSum);
        System.out.println("偶数数集合的和:"+evenSum);
    }

    private static boolean isExist(int temp, List odd, List even) {
        if (odd.indexOf(temp) > 0 || even.indexOf(temp) > 0) {
            return true;
        } else {
            return false;
        }
    }

}

问题解决,请采纳!

我的思路是:
1、先在一个for循环用Random类的randInt()方法产生20个随机数,然后通过判断是否可以整除2来判断是奇数还是偶数,然后放入偶数集合或奇数集合
2、用两个for循环依此遍历奇数集合和偶数集合,计算产生的奇数和偶数的和。
3、打印结果。
参考链接:
java中产生指定范围内的随机数_打呼噜的星.的博客-CSDN博客_java随机生成一个区间的数
代码如下:

import java.util.ArrayList;
import java.util.Random;

public class RandomList {

    public static void main(String[] args) {
        
        ArrayList<Integer> evenNumbers = new ArrayList<Integer>();
        ArrayList<Integer> oddNumbers = new ArrayList<Integer>();
        
        
        int numbers[] = new int[20];
        
        Random rand = new Random();
        //产生201100的随机数
        System.out.println("产生的随机数为:");
        for(int i=0;i<20;i++) {
            //https://blog.csdn.net/wsj_jerry521/article/details/109735801
            numbers[i] = rand.nextInt(100)+1;
            System.out.print(numbers[i]+" ");
            if(numbers[i]%2==0) {  //如果是偶数放入偶数集合
                evenNumbers.add(numbers[i]);
            }else { //如果是奇数放入奇数集合
                oddNumbers.add(numbers[i]);        
            }
        }
        System.out.println();

        int evenSum=0;
        int oddSum=0;
        System.out.println("产生的偶数为:");
        for(int i=0;i<evenNumbers.size();i++) { //遍历偶数集合,计算产生的偶数之和
            System.out.print(evenNumbers.get(i)+" ");
            evenSum+=evenNumbers.get(i);
        }
        System.out.println();
        
        System.out.println("产生的奇数为:");
        for(int i=0;i<oddNumbers.size();i++) {//遍历奇数集合,计算产生的奇数集合
            System.out.print(oddNumbers.get(i)+" ");
            oddSum+=oddNumbers.get(i);
        }
        
        //打印结果
        System.out.println("\n产生的随机数偶数之和是:"+evenSum);
        System.out.println("产生的随机数奇数之和是:"+oddSum);
        
    }
}

img

img



import java.util.*;


public class Solution {
    public static void main(String[] args) {
    // 随机生成201-100的随机数把奇数和偶数分别放在两个集合中然后求奇数和偶数的和
        HashSet<Integer> set1 = new HashSet<>();
        HashSet<Integer> set2 = new HashSet<>();

        int s1 = 0;
        int s2 = 0;

        while (set1.size() < 20 || set2.size() < 20){
            int tmp = 1 + (int) (Math.random() * 100);//    ----->     [1,100]
            // 偶数
            if (tmp%2 == 0 ) {
                if (set2.size()<20 && !set2.contains(tmp)){
                    set2.add(tmp);
                    s2 += tmp;
                }
            }else {
                // 奇数
                if (set1.size()<20 && !set1.contains(tmp)) {
                    set1.add(tmp);
                    s1 += tmp;
                }
            }
        }

        System.out.println("set1 = " + set1);
        System.out.println("set2 = " + set2);
        System.out.println("set1的总和 = " + s1);
        System.out.println("set2的总和 = " + s2);

    }

}