首页 > 编程语言 >模拟双色球彩票系统(java)

模拟双色球彩票系统(java)

时间:2023-07-04 21:14:24浏览次数:62  
标签:双色球 java 号码 int arr System 彩票 number out

一、问题描述

 注:六个红色球号码均不同,蓝色球号码可以红色球号码相同;

二、设计思路

(1)先随机出一个中奖号码,依据这个号码对后续进行颁奖;

(2)再从用户端接收对应的6个红色球号码以及1个蓝色球号码;

(3)将中奖号码与用户号码进行对比,得出对应的中奖结果;

ps:”如何得到不重复的随机数“值得学习一下;

三、代码 

 

  1 import java.util.Random;
  2 import java.util.Scanner;
  3 
  4 public class shuangseqiu {
  5     public static void main(String[] args) {
  6         //投注号码由六个红色球号码和一个蓝色球号码组成。红色球号码从1-33,蓝色球号码从1-16
  7         //1.需要随机生成一个大奖号码   不重复
  8         int[] arr = getRandom();
  9         System.out.println("--------------");
 10         for (int i = 0; i < arr.length; i++) {
 11 
 12             System.out.print(arr[i] + " ");
 13         }
 14         System.out.println("");
 15         System.out.println("--------------");
 16 
 17         //2.用户输入自己选择的号码
 18         int[] newArr = yonghu();
 19         //3.判断该情况下用户是否中奖
 20         int redCount=0,blueCount=0;
 21         for(int i=0;i<arr.length-1;i++){
 22             for(int j=0;j< newArr.length-1;j++){
 23                 if(arr[i]==newArr[j]){
 24                     redCount++;
 25                     break;
 26                 }
 27             }
 28         }
 29         if(arr[arr.length-1]==newArr[newArr.length-1]){
 30             blueCount++;
 31         }
 32         //对每种对应的得奖情况进行输出
 33         if(redCount==6&&blueCount==1){
 34             System.out.println("恭喜您中奖1000万");
 35         }
 36         else if(redCount==6&&blueCount==0){
 37             System.out.println("恭喜您中奖500万");
 38         }
 39         else if(redCount==5&&blueCount==1){
 40             System.out.println("恭喜您中奖3000元");
 41         }
 42         else if((redCount==5&&blueCount==0)||(redCount==4&&blueCount==1)){
 43             System.out.println("恭喜您中奖200元");
 44         }
 45         else if((redCount==4&&blueCount==0)||(redCount==3&&blueCount==1)||(redCount==2&&blueCount==1)){
 46             System.out.println("恭喜您中奖10元");
 47         }
 48         else if((redCount==1&&blueCount==1)||(redCount==0&&blueCount==1)){
 49             System.out.println("恭喜您中奖5元");
 50         }
 51         else{
 52             System.out.println("谢谢参与");
 53         }
 54     }
 55 
 56     public static int[] getRandom() {
 57         //此方法功能是生成一个大奖号码
 58         Random r = new Random();
 59         int[] arr = new int[7];
 60         //生成随机的六个红球号码
 61         for (int i = 0; i < arr.length; ) {
 62             int redNumber = r.nextInt(33) + 1;
 63             if (!contain(arr, redNumber)) {
 64                 arr[i] = redNumber;
 65                 i++;
 66             }
 67         }
 68         //生成随机一个蓝球号码
 69         int blueNumber = r.nextInt(16) + 1;
 70         arr[arr.length - 1] = blueNumber;
 71         return arr;
 72 
 73     }
 74 
 75     public static boolean contain(int[] arr, int number) {
 76         for (int i = 0; i < arr.length; i++) {
 77             if (number == arr[i]) {
 78                 return true;
 79             }
 80         }
 81         return false;
 82     }  //用来得到不重复的数据,并存到数组中
 83 
 84     public static int[] yonghu() {
 85         Scanner sc = new Scanner(System.in);
 86         int[] arr = new int[7];
 87         for (int i = 0; i < arr.length - 1; ) {
 88             System.out.println("请输入第" + (i + 1) + "个红球号码");
 89             int number = sc.nextInt();
 90             if (number >= 1 && number <= 33) {
 91                 if (!contain(arr, number)) {
 92                     arr[i] = number;
 93                     i++;
 94                 } else {
 95                     System.out.println("号码重复,请重新输入第" + (i + 1) + "个红球号码");
 96                 }
 97             } else {
 98                 System.out.println("号码超出范围,请重新输入");
 99             }
100 
101         }
102         System.out.println("请输入一个蓝球号码");
103         while (true) {
104             int blue = sc.nextInt();
105             if (blue >= 1 && blue <= 16) {
106                 arr[arr.length - 1] = blue;
107                 break;
108             } else {
109                 System.out.println("号码有误,请重新输入蓝球号码");
110             }
111         }
112         return arr;
113     }
114 }

 

四、总结

(1)熟练运用方法,提高代码的复用率;

(2)当方法的范围值为数组时,不需要加方括号[];

(3)idea在运行时,如果遇到永远不会执行的代码时,会报错;   例如在死循环后面的代码永远不会执行,就会报错;

(4)在写代码前,先对问题进行分析,分成若干个小块,再逐一编写代码,完成任务;

 

标签:双色球,java,号码,int,arr,System,彩票,number,out
From: https://www.cnblogs.com/lian369/p/17526993.html

相关文章

  • GitHub上最热门的Java开源项目
    这是一个轻快,简洁,功能强大,使用Java开发的博客系统。2jeecg-boothttps://github.com/zhangdaiscott/jeecg-bootStar2873这是一款基于代码生成器的JAVA快速开发平台!提高UI能力的同时,降低前后分离的开发成本,JeecgBoot还独创在线开发模式,No代码概念,一系列在线智能开发:在线配置......
  • 高级Java开发面试常用题的答案
    一、数据结构与算法基础·说一下几种常见的排序算法和分别的复杂度。·用Java写一个冒泡排序算法/**现在有一个包含1000个数的数组,仅前面100个无序,后面900个都已排好序且都大于前面100个数字,那么在第一趟遍历后,最后发生交换的位置必定小于100,且这个位置之后的数据必定已......
  • 最全Java锁详解:独享锁/共享锁+公平锁/非公平锁+乐观锁/悲观锁
    最全Java锁详解:独享锁/共享锁+公平锁/非公平锁+乐观锁/悲观锁在Java并发场景中,会涉及到各种各样的锁如公平锁,乐观锁,悲观锁等等,这篇文章介绍各种锁的分类:公平锁/非公平锁可重入锁独享锁/共享锁乐观锁/悲观锁分段锁自旋锁 最全Java锁详解:独享锁/共享锁+公平锁/非......
  • JAVA生产环境性能监控与调优看这一篇就够了
     JVM的内存结构 JVM的参数类型标准参数(各版本中保持稳定)-help-server-client-version-showversion-cp-classpathX参数(非标准化参数)-Xint:解释执行-Xcomp:第一次使用就编译成本地代码-Xmixed:混合模式,JVM自己决定是否编译成本地代码示例:java-version(默认是......
  • 数据库问题之“字符编码问题 Cause: java.sql.SQLException: Incorrect string value:
     1)表1和表2的产品名称[数据库字段]字符编译方式不一致①问题 org.springframework.jdbc.UncategorizedSQLException:Errorupdatingdatabase.Cause:java.sql.SQLException:Incorrectstringvalue:'\xF0\x9F\x8E\x81\xE7\x88...'forcolumn'product_name'atr......
  • java中concurrentHashMAP和HashTable有什么区别?
    ConcurrentHashMap和HashTable都是Java中用于实现线程安全的哈希表数据结构的类,但它们有一些关键的区别。线程安全性:ConcurrentHashMap是通过使用锁分段技术来实现线程安全的。它将整个哈希表分成了多个段(默认为16个),每个段有自己的锁。这样,在大多数情况下,多个线程可以同时访问不同......
  • Java虚拟机(JVM)内存底层分析
    对象和类的详解类:我们叫做class。对象:我们叫做Object,instance(实例)。总结1.类可以看成一类对象的模板,对象可以看成该类的一个具体实例。2.类是用于描述同一类型的对象的一个抽象概念,类中定义了这一类对象所应具有的共同的属性、方法。类的定义:对于一个类来说,有三种成员:属......
  • java的vscode自动补全
    1.vscode补全打印、循环和main函数vscode支持Eclipse和IDEA两个IDE的代码补全方式具体如下表: 代码片段Eclipse风格快捷方式IDEA风格快捷方式System.out.println()sysoutsoutSystem.err.println()syserrserr当前函数签名的System.out.println()sys......
  • 一些Java编程中的基本概念
    介绍一些编程中的基本概念,比如:标识符、变量、常量、数据类型、运算符、基本数据类型的类型转换等。二进制和十进制的转化1.十进制整数转换为二进制整数采用"除2取余,逆序排列"法。2.二进制转十进制采用“权相加法”。注释在Java中根据注释的功能不同,主要分为单行注释、多行注......
  • java调用filter,map方法
    java的集合类,没有直接实现filter,map这些函数式方法,要调用这些方法,可以使用Java8的StreamAPI详细使用可参考:Java8中Stream详细用法大全 Java8的StreamAPI的坑1.没有直接的findObj方法findFirst和findAny都不支持传入条件要从list中查找一个对象,只能通过filte......