我是靠谱客的博主 友好蜜蜂,最近开发中收集的这篇文章主要介绍1.设计一个抽奖程序,程序通过随机方式产生中奖序号。程序可以设置序号包含数字位数 和最大序号,一次抽取几个中奖序号(最少 1 个序号,最多不超过 2 个序号)和总共中奖 人数(最少 5 人)。抽奖过程,觉得挺不错的,现在分享给大家,希望可以做个参考。

概述

实验目的   掌握随机函数的使用

主要仪器设备及耗材    安装了 JDK1.8 的 PC 一台

实验内容

       1.设计一个抽奖程序,程序通过随机方式产生中奖序号。程序可以设置序号包含数字位数 和最大序号,一次抽取几个中奖序号(最少 1 个序号,最多不超过 2 个序号)和总共中奖 人数(最少 5 人)。抽奖过程分多轮进行,最后现实出所有的中奖的序号。

 

解题思路:说实话题目开始我没很明白,看了好一会。下面开始解读题目要求:

程序通过随机方式产生中奖序号:要用到Random随机函数。

程序可以设置序号包含数字位数 和 最大序号

【设置数字位数:该随机数可以设置为1位、2位、3位·······,用户自定义输入设置随机数位数。不过考虑到用int类型存储,调用Integer.MAX_VALUE可以知道int最大值是2147483647,是一个10位的数字,因此数字位数最多10位,至少1位】

【最大序号:该最大序号不能超过设定的随机位数的最大值,比如2位数的随机数,那么最大序号不能大于99,只能是10到99】

一次抽取几个中奖序号(最少 1 个序号,最多不超过 2 个序号)和总共中奖 人数(最少 5 人):我认为这句话的理解是难点,我的理解是,一次抽取n(n是1或者2)个中奖序号,就是这n个序号就是中奖序号,如果生成的随机数等于设置的中奖序号,那么就中奖。设置总共中奖人数m(m≥5)个,也就是当生成的随机数中出现m个满足中奖序号的随机数,则停止生成。

(有不同理解题目的同学还请多多指点,欢迎在下方评论留言)

下面开始写题:

package com.temp;

import java.io.BufferedReader;
import java.io.InputStreamReader;
import java.util.Random;
import java.util.Scanner;

/**
 * @Author lanxiaofang
 * @email 983770299@qq.com
 * @date 2020/10/26 8:14
 */

public class LuckDrawBox {

    public static void main(String[] args) throws Exception{

        Random random = new Random();
        Scanner scanner = new Scanner(System.in);
        
        System.out.println("----请问程序包含数字位数是:");
        int num_cnt = scanner.nextInt();
        int num_digit = (int)Math.pow(10, num_cnt);
        
        if(num_cnt <= 10 && num_cnt >0) {
        	
        	System.out.println("----请问数字最大序号是:");
            int max_num = scanner.nextInt();
            
            if(max_num >= num_digit) {
            	System.out.println("----数字最大序号要求小于" + num_digit);
			} /*这一段用不到,因为系统会自动报错
				 * else if(max_num > Integer.MAX_VALUE) { System.out.println("----数字最大序号要求小于" +
				 * Integer.MAX_VALUE); }
				 */
            else {
        		System.out.println("----请问您需要设置几个中奖序号,以空格隔开(最少 1 个序号,最多不超过 2 个序号)?");
        		int listLength = scanner.nextInt();
        		if(listLength == 1 || listLength == 2) {
        			int[] winList = new int[listLength+1];
            		
            		BufferedReader bufferedReader = new BufferedReader(new InputStreamReader(System.in));
            		for(int i=0; i<listLength; i++) {
            			System.out.println("请输入第"+(i+1)+"个中奖序号");
            			winList[i] = Integer.parseInt(bufferedReader.readLine());
            			System.out.println("----您输入的中奖序号有:"+winList[i]);
            		}
            		
            		System.out.println("----请问总共中奖人数是:");
        	        int sum_winner_cnt = scanner.nextInt();
        	        if(sum_winner_cnt>=5) {
        	        	int winner_cnt = 0, random_cnt = 0;
            	        
            	        while(winner_cnt < sum_winner_cnt) {
            	        	
            	        	int randomNum = random.nextInt(max_num);//生成一个不超过max_num的随机值
            	        	
            	        	//生成num_cnt位的随机值,就是生成一个小于num_digit的数,当随机数小于num_digit/10时,加上num_digit/10来确保位数  
            	        	//比如生成一个4位数的随机值,那么就是生成一个小于10000(最大9999)的随机整数,当随机数小于1000时,加上1000,来确保位数。
            	        	if(randomNum < num_digit/10) {           	        		
            	        		randomNum += num_digit/10;
            	        	}
            	        	System.out.println("----这是第"+ ++random_cnt +"次抽奖,生成的随机数是"+randomNum);
            	        	
            	        	for(int i : winList) {
            	        		if(i==randomNum) {
            	        			++winner_cnt;
            	        			System.out.println("****第"+winner_cnt+"个中奖的人:"+"第"+random_cnt+"个人中奖啦");
            	        		}
            	        	}	
            	        }
        	        }else {
        	        	System.out.println("----总共中奖人数(最少 5 人)");
        	        }
        	        bufferedReader.close();
        		}else {
        			System.out.println("----最少 1 个序号,最多不超过 2 个序号");
        		}
        	}
        }else {
        	System.out.println("您需要的数字位数太长");
        }  
    }
}

 结果:

 

最后

以上就是友好蜜蜂为你收集整理的1.设计一个抽奖程序,程序通过随机方式产生中奖序号。程序可以设置序号包含数字位数 和最大序号,一次抽取几个中奖序号(最少 1 个序号,最多不超过 2 个序号)和总共中奖 人数(最少 5 人)。抽奖过程的全部内容,希望文章能够帮你解决1.设计一个抽奖程序,程序通过随机方式产生中奖序号。程序可以设置序号包含数字位数 和最大序号,一次抽取几个中奖序号(最少 1 个序号,最多不超过 2 个序号)和总共中奖 人数(最少 5 人)。抽奖过程所遇到的程序开发问题。

如果觉得靠谱客网站的内容还不错,欢迎将靠谱客网站推荐给程序员好友。

本图文内容来源于网友提供,作为学习参考使用,或来自网络收集整理,版权属于原作者所有。
点赞(47)

评论列表共有 0 条评论

立即
投稿
返回
顶部