具体题目:写一个彩票程序:30选7。然后从键盘输入7个数,然后随机(1~30之间)生成7个随机数,注意不能重复,对比7个数是否与随机数有相同的。最后显示“中了几个号”。同时,如果中了7个号,显示一等奖;如果中了6个号,显示二等奖;如果中了5个号,显示三等奖。要求:选用合适的容器和算法。(说明:键盘输入可以使用Scanner类)
import java.util.HashSet;
import java.util.Scanner;
import java.util.Set;
public class Testb {
/*构造一个方法getLuck*/
public static HashSet<Integer> getLuck() {
HashSet<Integer> s = new HashSet<Integer>();
while (s.size() < 7) {
/*生成7个数字 并放入HashSet的s当中*/
int n = (int) (Math.random() * 30 + 1);
s.add(n);
}
return s;
}
public static void main(String[] args) {
HashSet<Integer> s = new HashSet<Integer>();
s = getLuck();
int x;
int bingo = 0;
/*输入数字*/
System.out.println("请输入7个数字,请勿重复");
Scanner sc = new Scanner(System.in);
for (int i = 0; i < 7; i++) {
x = sc.nextInt();
/*contains方法判断输入的数字是否在s当中,num用来统计具体有多少个数字在里面*/
if (s.contains(x)) {
bingo++;
}
}
/*根据条件进行判断中奖的情况*/
System.out.println("中了"+bingo+"个号码");
if (bingo == 7) {
System.out.println("一等奖");
}
else if (bingo == 6) {
System.out.println("二等奖");
}
else if (bingo == 5) {
System.out.println("三等奖");
}
else {
System.out.println("没有中奖");
}
}
}
对于本题的理解:根据题目要求,首先是要生成7个随机数,然后再从键盘输入进去7个数字,让这两者进行比较,再根据有多少个相同的结果再判断中奖情况。那么在主函数输入7个数字之前。先定义一个方法getLuck(),在里面定义好一个HashSet类的s,用来存放随机生成的数字,然后再返回。在主函数当中,就用Scanner类从键盘输入进去7个数字,由于我们在上面的方法getLcuk()当中,设置的是HashSet类型的s,那么可以利用contains方法,将键盘输入的数字与随机生成的数字进行比较,contains方法可以判断里面的元素,用if语句判断,如果有出现的话会返回true,所以利用bingo进行累计,看看有多个号码中了。最后就根据条件,看看有多少个号码中了,对应中了几等奖。
总结:
1.HashSet的add方法用来存放它的对象
2.hashset.contains(x)方法用来判断是否有包括在hashset当中是否包含了x元素