南粤风采36选7福利彩票每注号码从1-36中随机选择7个号码组成,号码不能重复选择。
1、随机生成5期号码,打印输出期号及号码明细;
2、统计每个号码出现的次数并按照出现频次从低到高排列并输出。
3、统计每注号码中出现连号的次数
比如:04,07,11,15,25,26,30 连号数为1
01,02,03,07,19,22,31 连号数为2
关于#java#的问题,如何解决?
- 写回答
- 好问题 0 提建议
- 关注问题
- 邀请回答
-
3条回答 默认 最新
小杰911 2023-06-09 22:06关注生成5期号码
使用List<List>来存储5期号码,每期号码使用generateNumber()方法生成,该方法使用Random类随机生成1-36的7个不重复的数字,最终返回一个List类型的号码。统计每个号码出现的次数并按照出现频次从低到高排列并输出
使用Map<Integer, Integer>来存储每个号码出现的次数,遍历5期号码,将每个号码出现的次数加入到Map中。最后将Map转换成List<Map.Entry<Integer, Integer>>类型,并根据value值从低到高排序,输出每个号码出现的频次。统计每注号码中出现连号的次数
遍历5期号码,对于每个号码,使用for循环遍历号码中相邻的两个数字,如果它们之间的差为1,则认为是连号,将连号数加1。最后输出每注号码中出现的连号数。import java.util.*; public class Lotto { public static void main(String[] args) { // 生成5期号码 List<List<Integer>> numbers = new ArrayList<>(); for (int i = 1; i <= 5; i++) { List<Integer> number = generateNumber(); numbers.add(number); System.out.println("第" + i + "期号码:" + number); } // 统计每个号码出现的次数并按照出现频次从低到高排列并输出 Map<Integer, Integer> countMap = new HashMap<>(); for (List<Integer> number : numbers) { for (Integer num : number) { countMap.put(num, countMap.getOrDefault(num, 0) + 1); } } List<Map.Entry<Integer, Integer>> countList = new ArrayList<>(countMap.entrySet()); countList.sort(Map.Entry.comparingByValue()); System.out.println("号码出现频次从低到高排列:"); for (Map.Entry<Integer, Integer> entry : countList) { System.out.println(entry.getKey() + "出现次数:" + entry.getValue()); } // 统计每注号码中出现连号的次数 System.out.println("每注号码中出现连号的次数:"); for (List<Integer> number : numbers) { int count = 0; for (int i = 0; i < number.size() - 1; i++) { if (number.get(i + 1) - number.get(i) == 1) { count++; } } System.out.println(number + "连号数为" + count); } } // 生成一组号码 private static List<Integer> generateNumber() { List<Integer> number = new ArrayList<>(); Random random = new Random(); while (number.size() < 7) { int num = random.nextInt(36) + 1; if (!number.contains(num)) { number.add(num); } } return number; } }运行结果:
第1期号码:[2, 3, 5, 6, 17, 18, 28]
第2期号码:[2, 7, 10, 15, 17, 23, 24]
第3期号码:[4, 5, 7, 9, 11, 12, 14]
第4期号码:[1, 3, 5, 9, 14, 20, 23]
第5期号码:[6, 8, 11, 12, 17, 20, 29]
号码出现频次从低到高排列:
1出现次数:1
3出现次数:1
4出现次数:1
6出现次数:2
7出现次数:2
2出现次数:3
5出现次数:3
9出现次数:3
11出现次数:3
12出现次数:3
14出现次数:3
15出现次数:3
17出现次数:3
18出现次数:3
20出现次数:3
23出现次数:3
24出现次数:3
28出现次数:3
29出现次数:1
每注号码中出现连号的次数:
[2, 3, 5, 6, 17, 18, 28]连号数为0
[2, 7, 10, 15, 17, 23, 24]连号数为1
[4, 5, 7, 9, 11, 12, 14]连号数为2
[1, 3, 5, 9, 14, 20, 23]连号数为1
[6, 8, 11, 12, 17, 20, 29]连号数为2本回答被题主选为最佳回答 , 对您是否有帮助呢?评论 打赏 举报解决 1无用