黑马程序员技术交流社区
标题:
12选5的彩票 可购买可兑奖~想试手气的抓紧了
[打印本页]
作者:
xuxu5112
时间:
2015-8-29 23:56
标题:
12选5的彩票 可购买可兑奖~想试手气的抓紧了
本帖最后由 xuxu5112 于 2015-8-30 00:05 编辑
import java.util.Scanner;
class Game {
public static void main(String[] args) {
int[] arr = buy(); //购买彩票
int[] brr = creatLottery(); //开奖
int x = compare(arr,brr); //比较购买的彩票和开奖的号码
contrastNumber(x); //兑奖
}
public static int[] buy() { //定义一个方法buy 卖彩票
int[] arr = new int[5]; //创建一个数组用于存储手购买的彩票号码
for (int i=1;i<=5 ;i++ ) {
Scanner sc = new Scanner(System.in);
System.out.println("请输入您想购买的号码:");
arr[i-1] = sc.nextInt();
}
System.out.println("您购买的彩票是:");
print(arr);
return arr;
}
public static void print(int[] arr){ //定义方法print用于打印 数组
for (int i = 0;i < arr.length ;i++ ) {
System.out.print(arr[i]+",");
}
}
public static int[] creatLottery(){ //定义 方法creatLottery()生成彩票
int[] arr = new int[5];
int i = 0;
w: while (true) { //避免重复数的出现
int num=(int)(Math.random()*12)+1;
if (num == arr[i]) {
continue w;
}else
arr[i]=num;
i++;
if(i==arr.length)
break;
}
System.out.println("\n"+"本期12选5的中奖号码是:");
System.out.println();
print(arr);
return arr;
}
public static void contrastNumber(int sum){//定义方法contrastNumber()判断是否中奖
switch (sum) {
case 0:
System.out.println("倒霉蛋,一个号码都没中");
break;
case 1:
System.out.println("做好事不留名捐献2元钱");
break;
case 2:
System.out.println("二狗,汪汪汪汪汪汪 20块");
break;
case 3:
System.out.println("三等奖,10000赚了一笔");
break;
case 4:
System.out.println("二等奖,200w报警了");
break;
case 5:
System.out.println("一等奖,500w运气用光了以后买彩票也中不了了");
break;
}
}
public static int compare(int[] arr,int[] brr){//比较数组中相同元素的个数
int sum = 0;
for (int i=0;i < arr.length ;i++ ) {
for (int j=0;j < brr.length ;j++ ) {
if (arr[i] == brr[j]) {
sum ++;
arr[i]= -1; // -1 ,-2 都是flag用于去掉重复项
brr[j]= -2;
//System.out.println(arr[i]);
break;
}
}
}
System.out.println("\n"+sum);
return sum;
}
}
复制代码
999999.jpg
(71.6 KB, 下载次数: 13)
下载附件
2015-8-30 00:02 上传
作者:
fighting8
时间:
2015-8-30 09:42
不错 挺有意思的
作者:
chensheng06
时间:
2015-8-30 11:11
牛逼的。。。
作者:
visen
时间:
2015-8-30 15:12
赞一个!!!!
作者:
懒懒~伍
时间:
2015-8-30 18:37
玩的挺嗨皮!
作者:
xuxu5112
时间:
2015-8-30 20:54
白天玩的时候发现creatLottery()中避免重复数部分并不能真的避免重复 所以改进了下代码如下:
import java.util.Scanner;
class Game {
public static void main(String[] args) {
int[] arr = buy(); //购买彩票
int[] brr = creatLottery(); //开奖
int x = compare(arr,brr); //比较购买的彩票和开奖的号码
contrastNumber(x); //兑奖
}
public static int[] buy() { //定义一个方法buy 卖彩票
int[] arr = new int[5]; //创建一个数组用于存储手购买的彩票号码
for (int i=1;i<=5 ;i++ ) {
Scanner sc = new Scanner(System.in);
System.out.println("请输入您想购买的号码:");
arr[i-1] = sc.nextInt();
}
System.out.println("您购买的彩票是:");
print(arr);
return arr;
}
public static void print(int[] arr){ //定义方法print用于打印 数组
for (int i = 0;i < arr.length ;i++ ) {
System.out.print(arr[i]+",");
}
}
public static int[] creatLottery(){ //定义 方法creatLottery()生成彩票
int[] arr = new int[5];
int i = 0;
w: while (true) { //避免重复数的出现
int num=(int)(Math.random()*12)+1;
if (indexOf(arr,num)) {
continue w;
}else
arr[i]=num;
i++;
if(i==arr.length)
break;
}
System.out.println("\n"+"本期12选5的中奖号码是:");
System.out.println();
print(arr);
return arr;
}
public static boolean indexOf(int[] arr,int x) {//判断数组arr中是否有x;
for (int i = 0;i<arr.length ;i++) {
if (arr[i] == x) {
return true;
}
}
return false;
}
public static void contrastNumber(int sum){//定义方法contrastNumber()判断是否中奖
switch (sum) {
case 0:
System.out.println("倒霉蛋,一个号码都没中");
break;
case 1:
System.out.println("做好事不留名捐献2元钱");
break;
case 2:
System.out.println("二狗,汪汪汪汪汪汪 20块");
break;
case 3:
System.out.println("三等奖,10000赚了一笔");
break;
case 4:
System.out.println("二等奖,200w报警了");
break;
case 5:
System.out.println("一等奖,500w运气用光了以后买彩票也中不了了");
break;
}
}
public static int compare(int[] arr,int[] brr){//比较数组中相同元素的个数
int sum = 0;
for (int i=0;i < arr.length ;i++ ) {
for (int j=0;j < brr.length ;j++ ) {
if (arr[i] == brr[j]) {
sum ++;
arr[i]= -1; // -1 ,-2 都是flag用于去掉重复项
brr[j]= -2;
//System.out.println(arr[i]);
break;
}
}
}
System.out.println("\n"+sum);
return sum;
}
}
复制代码
作者:
Wqi
时间:
2015-8-30 21:13
这算法中奖的概率比实际的低多了......
作者:
夕阳游子
时间:
2015-8-30 21:21
厉害,要是中了,发钱啊
作者:
G_Y_C黑马
时间:
2015-8-30 22:42
老师说,高手不要炫耀代码……不过确实挺牛,赞一个
作者:
hutudan1993
时间:
2015-8-30 22:45
哇塞,好牛的样子呢.....加油哟..非常棒
作者:
binarycoc
时间:
2015-8-30 23:19
相当给力
欢迎光临 黑马程序员技术交流社区 (http://bbs.itheima.com/)
黑马程序员IT技术论坛 X3.2