Java模拟一个买彩票机制的简单算法

Java模拟一个买彩票机制的简单算法,第1张

彩票游戏

假如你想开发一个玩彩票的游戏,程序随机地产生一个两位数的彩票,提示用户输入一个两位数,然后按照下面的规则判定用户是否能赢。


①如果用户输入的数匹配彩票的实际顺序,奖金10 000美元。
②如果用户输入的所有数字匹配彩票的所有数字,但顺序不一致,奖金 3 000美元。
③如果用户输入的一个数字仅满足顺序情况下匹配彩票的一个数字,奖金1 000美元。
④如果用户输入的一个数字仅满足非顺序情况下匹配彩票的一个数字,奖金500美元。
⑤如果用户输入的数字没有匹配任何一个数字,则彩票作废。


首先需要知道如何随机生成一个两位整数:

①Math.random()函数可以产生范围在[0,1)的随机值;
②Math.random()*100得到的是范围在[0,100)之内的随机值;该范围中包含0-9(一位数),显然不符合两位数的要求。可以使用 :

  • Math.random()*90:范围在[0,90)
  • Math.random()*90+10:范围在[10,100)此时可能出现99.xxxx不合规
  • 最后 (int)(Math.random() * 90 + 10) 强制转换为int型范围变为[10,99]

总结:可以通过 (int)(Math.random() * 90 + 10) ,产生一个两位数的随机数。


完整实现:

package com.atguigu.java;
import java.util.Scanner;
public class CaiPiaoTest {
    public static void main(String[] args) {
        //①先随机生成一个两位数
        //Math.random():产生[0,1)之间的随机数
        int number=(int)(Math.random()*90+10);
        int numberShi=number/10; //得到彩票十位上的数字
        int numberGe=number%10; //得到彩票个位上的数字
        //②用户输入一个两位数
        Scanner scanner=new Scanner(System.in);
        System.out.println("请输入一个两位数:");
        int guess = scanner.nextInt();
        int guessShi=guess/10;
        int guessGe=guess%10;

        if(number == guess){
            System.out.println("奖金10 000美元");
        }else if(numberShi == guessGe && numberGe == guessShi){
            System.out.println("奖金3 000美元");
        }else if(numberShi==guessShi || numberGe == guessGe){
            System.out.println("奖金1 000美元");
        }else if(numberShi==guessGe || numberGe == guessShi){
            System.out.println("奖金500美元");
        }else{
            System.out.println("没中奖");
        }
        System.out.println("中奖号码是:" + number);
    }
}

提醒:要注意if-else结构的顺序,否则可能报错。

欢迎分享,转载请注明来源:内存溢出

原文地址: http://outofmemory.cn/langs/755800.html

(0)
打赏 微信扫一扫 微信扫一扫 支付宝扫一扫 支付宝扫一扫
上一篇 2022-04-30
下一篇 2022-04-30

发表评论

登录后才能评论

评论列表(0条)

保存