Java程序,生成一个1-33之间不重复的6个数字,组成一个int数组,在控制台依次输入六个整数,输入的数字和生成的数字相同3个(含3个)以上结束程序,反之则继续输入,先定义一个方法,需要传的参数是两个int[ ]类
我的思路是:
1、定义比对答案的方法game,先进行参数为空检测,然后用for循环遍历回答数组和答案数组,如果正确,则正确计数+1,然后将答案数组这个元素置-1,不再参与比对,循环结束,判断回答正确数大于3返回true,表示游戏过关,否则返回false,表示游戏没有过关
2、在main方法,先用Random类的nextInt()方法产生6个的答案数组元素,然后在while循环进行游戏判断,获取6个输入作为回答数组,然后调用game方法,判断回答正确数是否超过3个,如果超过则游戏过关,否则继续猜数
参考链接:
java中产生指定范围内的随机数_打呼噜的星.的博客-CSDN博客_java随机生成一个区间的数
代码如下:
import java.util.Random;
import java.util.Scanner;
public class GuessNumbersGame {
public static boolean game(int[]answer,int[]result) {
int right=0;
//参数检测是否为空
if(answer==null||result==null) {
System.out.println("参数错误!");
return false;
}
// int atemp,rtemp;
// for(int i=0;i<5;i++) {
//
// for(int j=i;j<6;j++) {
//
// if(answer[i]>answer[i]) {
// atemp=answer[i];
// answer[i]=answer[j];
// answer[j]=atemp;
//
// rtemp=result[i];
// result[i]=result[j];
// result[j]=rtemp;
// }
//
// }
// }
//
for(int i=0;i<6;i++) {
for(int j=0;j<6;j++) {
// 将回答数组每个元素与答案数组每一个元素比对,如果相同则回答正确计数+1,然后将这个答案数组元素置-1,表示已经比对过,并不再比对
if(answer[i]==result[j]) {
result[j]=-1;
right++;
}
}
}
//入股回答正确数超过3,则返回true,否则false
if(right>=3) {
return true;
}else {
return false;
}
}
public static void main(String[] args) {
// TODO Auto-generated method stub
//https://blog.csdn.net/wsj_jerry521/article/details/109735801
int [] result=new int[6];
Random rand = new Random();
//产生答案数组
for(int i=0;i<6;i++) {
result[i]=rand.nextInt(33)+1;
//System.out.print(result[i]+" ");
}
System.out.println();
boolean guessright=false;
Scanner sc = new Scanner(System.in);
int[] answer=new int [6];
//进行猜数游戏
while(guessright==false) {
System.out.println("请输入所猜的六个数:");
//获取6个回答
for(int i=0;i<6;i++) {
answer[i] = sc.nextInt();
}
//比对答案,如果正确,退出游戏,如果错误继续猜数
guessright= game(answer,result);
}
System.out.println("恭喜你,游戏过关!");
}
}
public static void main(String[] args) {
Random random = new Random();
int[] result = new int[6];
for (int i = 0; i < 6; i++) {
result[i] = random.nextInt(33) + 1;
}
List list = new ArrayList();
for (int i : result) {
list.add(i);
}
// System.out.println("随机数组已生成:" + list);
Scanner scanner = new Scanner(System.in);
int[] answer = new int[6];
boolean flag = true;
while (flag) {
System.out.println("请输入你猜的6个数字:(1-33之间,包含1-33)");
for (int i = 0; i < 6; i++) {
answer[i] = scanner.nextInt();
}
// List list2 = new ArrayList();
// for (int i : answer) {
// list2.add(i);
// }
// System.out.println(list2);
List list3 = new ArrayList();
for (int i : result) {
list3.add(i);
}
flag = flag(list3,answer);
}
System.out.println("success!");
}
public static boolean flag(List<Integer> result,int[] answer) {
int num = 0 ;
for (int i = 0; i < result.size(); i++) {
for (int j = 0; j < answer.length; j++) {
if (answer[j] == result.get(i)){
num++;
result.set(i,0);
}
}
}
if (num >= 3){
return false;
}
return true;
}
```)