先上图片版:
以下是代码版:
/**
* 我有一个需求,好比我现在是在卖彩票,我建立了一个长度为4的int类型数组,通过random的方式,为数组【stochastic】中的4个位置分别都赋了值。
* 然后客户来买彩票,我同样建立了一个长度为4的【number】数组,使用for循环的方式让客户为数组中每个位置赋值(就好比买彩票,客户选了4个号)。
* 中奖的规则是:主要用户选的号,能和我随机生成的数字对上即可,不要求位置。
* 比如我随机生成的数字是:1、2、3、4,客户选的号码是4、3、2、1,虽然位置不同,但号码全部都对上了,这就是一等奖。
* 如果有3个数字对上,那就是二等奖。 2个数字对上,三等奖。 1个数字对上,四等奖。 一个数字都没有对上,那就是没有中过奖,就可以滚粗了。
*/
import java.util.Scanner;
public class ¥ddd {
public static void main(String[] args){
Scanner input=new Scanner(System.in);
int[] stochastic=new int[4];
for(int i=0;i<stochastic.length;i++){
stochastic[i]=(int)(Math.random()*10);
}
//彩票内幕——输出随机数看结果
for(int i:stochastic){
System.out.print(i+"\t");
}
System.out.println();
//用户给数组number赋值
int[] number=new int[4];
for(int i:number){
System.out.print("请输入第"+(i+1)+"位数(0—9):");
number[i]=input.nextInt();
}
int sum=0;
//双重循环,stochastic做外层
for(int i=0;i<stochastic.length;i++){
for(int k=0;k<number.length;k++){
if(stochastic[i]==number[k]){
sum++;
/*
* 做到这一步就失败了,不知道该怎么操作了,根本是行不通的。我想通过一个为0的sum变量,只要有1个数字对上,那么sum就+1.
* 2个对上,sum就+2. 全部对上,sum就+4。 然后再通过switch来输出不同的中奖结果。
* 但是我仔细想了一下,根本行不通,因为这个循环的运行结果是:
* 如果(假设)stochastic[0]=3, number[0]=3, number[1]=6, number[2]=3, number[3]=6.
* 那么 stochastic[0]和number[0]=3对上了,这个时候sum加了1;
* 但是这时候number[k]又进入了第二次的循环, stochastic[0]又和number[2]对上了,这个时候sum又加了1.
* 您看,在i的第一轮循环,仅仅是对比stochastic的第一个数值,sum就已经加了2次了。所以这个操作方法根本就是错误的。
*
* 那么,又该如何操作呢???
*/
}
}
}
System.out.println(sum);
}
}