很早之前玩过这个猜数字游戏 一直想着试试能不能复刻出来 最近动手写了下 全当从头开始学java吧 之前用数组版本写了个 发现一直有bug没法解决 然后换成动态数组写 个人测试没啥bug 只不过有些地方需要完善之类的 等后续继续学习 在回过头完善算了
package game1;
import java.util.ArrayList;
import java.util.Random;
import java.util.Scanner;
public class guess {
public static void main(String[] args) {
boolean flag=false;
ArrayList guessnum = new ArrayList<>();
ArrayList answer = new ArrayList<>();
ArrayList temp = new ArrayList<>();
Random rd = new Random();
for (int i = 0; i <4 ; i++) {
answer.add(rd.nextInt(10));
}
System.out.println("答案:"+answer.toString());
while(flag==false){
int A=0,B=0;
guessnum.clear();
Scanner sc = new Scanner(System.in);
String num =sc.next();
String[] Strnum = num.toString().split("");
for (String x:Strnum){
guessnum.add(Integer.parseInt(x));
}
if (guessnum.size()>answer.size()){
break;
}
temp = (ArrayList)answer.clone();
System.out.println(guessnum);
for (int i = 0; i
全当是记录学习了 有bug提出来 我试试能不能改 同样能优化也能跟我说说 手把手教我改的那种最好(
游戏规则:输入4个数字 相同位置数字相同A+1 不同位置数字相同B+1
先判断A后判断B 最后给出反馈A: B: 全猜中为4A 表示获胜游戏结束
bug数组版也放出来 能教我怎么修改更好 感谢
---------------------------------------------------------------bug-------------------------------------------------------------
package game1;
import java.util.Random;
import java.util.Scanner;
public class Main {
public static void main(String[] args) {
int num;//保存随机数
int[] num1=null;
num1 = new int[4];
int scnum;
boolean flag=false;
Random random = new Random(12341);
num = random.nextInt(8999)+1000;
System.out.println(num);//输出获取的随机数
num1 = Main.paixu(num);//转换成倒叙数组
// for (int i = 0; i <4 ; i++) {
// System.out.println("num1反转数后"+":"+num1[i]);
// }
System.out.println("输入4位数字");
Scanner sc = new Scanner(System.in);
while (flag = true){
scnum = sc.nextInt();
if (scnum<=9999 & scnum>1000){
int num2[]=null;
num2 = new int[4];
num2 = Main.paixu(scnum);//转换成倒叙数组
System.out.println("输出为"+scnum);
for (int i = 0; i <4 ; i++) {
System.out.println("num2反转数后"+":"+num2[i]);
}
int a=0;
int b=0;
for (int i = 0; i <4 ; i++) {
if (num2[i]==num1[i]){
a++;
}
else {
int[] temp=null;
temp=new int[4];
temp[i] = num2[i];
System.out.println("temp[i]: "+temp[i] +"num1[i]: "+num1[i] +"i: "+i);
for (int j = 0; j <4 ; j++) {
if (temp[j]==num1[i])
{
System.out.println("temp[i]: "+temp[i] +"num1[i]: "+num1[i] +"i: "+i);
b++;
break;
}
}
}
}
System.out.println("A"+a);
System.out.println("b"+b);
if (a==4){
System.out.println("win");
break;
}
}
else{
System.out.println("输入错误");
}
}
}
public static int[] paixu(int num) {
int[] num1 = null;
num1 = new int[4];
while (num != 0) {
for (int i = 0; i < 4; i++) {
int val = num % 10;
num1[i] = val;
// System.out.println("num1反转数前"+i+":"+num1[i]);
num = num / 10;
}
int temp = num1[num1.length / 2];
num1[num1.length / 2] = num1[num1.length / 2 - 1];
num1[num1.length / 2 - 1] = temp;
temp = num1[0];
num1[0] = num1[num1.length - 1];
num1[num1.length - 1] = temp;
}
return num1;
}
}



