java中的随机数不能正常工作

java中的随机数不能正常工作,java,random,Java,Random,我想创建一个彩票程序,创建四个随机数字,每个数字在0到9之间(含)。此程序要求用户猜测四个数字,并将每个用户猜测的数字与四个随机数字进行比较,并将赢得的消息显示为: 不匹配0分 任何一个数字匹配5个点 与100点匹配的任意两个数字 与2000点匹配的任意三位数字 匹配1000000点的所有四位数字 我的程序运行,但有一些逻辑错误。例如,输出应为: 随机数:2 3 4 猜测数字:1 2 5 7-->1个匹配数字 猜测数字:3 5 7 3-->2个匹配数字 猜测数字:3-->2个匹配数字 猜测数字

我想创建一个彩票程序,创建四个随机数字,每个数字在0到9之间(含)。此程序要求用户猜测四个数字,并将每个用户猜测的数字与四个随机数字进行比较,并将赢得的消息显示为:

不匹配0分
任何一个数字匹配5个点
与100点匹配的任意两个数字
与2000点匹配的任意三位数字
匹配1000000点的所有四位数字
我的程序运行,但有一些逻辑错误。例如,输出应为:

随机数:2 3 4
猜测数字:1 2 5 7-->1个匹配数字
猜测数字:3 5 7 3-->2个匹配数字
猜测数字:3-->2个匹配数字
猜测数字:3-->2个匹配数字
公共类彩票
{           
公共静态void main(字符串[]args){
最终整数限值=10;
int totalCount=0;
整数点;
Random Random=新建Random();//创建Random类的对象
Scanner input=new Scanner(System.in);//创建Scanner类的对象
//声明两个数组
int[]猜测数=新的int[4];
int[]随机数=新的int[4];

对于(inti=0;i来说,您的总体逻辑似乎很好。 如果我理解正确,您只需要不同的输出。 在输出中使用类似的内容

String guessNumbers = "";
String randomNumbers = "";
for (int i = 0; i < 4; i++){
    randomNumbers += randomNumber[i]+" ";
    guessNumbers += guessNumber[i]+" ";
}
System.out.println("Random numbers: "+randomNumbers);
System.out.println("Guess numbers: "+guessNumbers+" --> # of matching digits "+totalCount);
System.out.println("You have earned " +totalPoint+ " points!!");

在我看来,问题在于一旦匹配了某个特定的数字,就应该将其从循环中删除,这样相同值的多次猜测就不会算作匹配。一种解决方案是对
随机数
使用ArrayList,并在匹配时将其删除。如果替换
//de之间的值将两个数组
comment和您的
totalPoint
赋值与以下内容结合起来,似乎可以满足您在示例中的要求

int guess;
ArrayList<Integer> randomNumber = new ArrayList<Integer>();

for (int i = 0; i < 4; i++) {
   randomNumber.add(random.nextInt(LIMIT));
}

for (int i = 0; i < 4; i++) {
   System.out.print("Enter your guess number from 0 to 9: ");
   guess = input.nextInt();
   for (int j = 0; j < randomNumber.size(); ++j) {
      if (randomNumber.get(j) == guess) {
         ++totalCount;
         randomNumber.remove(j);
         break;
      }
   }
}
input.close();
int猜测;
ArrayList randomNumber=新的ArrayList();
对于(int i=0;i<4;i++){
randomNumber.add(random.nextInt(LIMIT));
}
对于(int i=0;i<4;i++){
System.out.print(“输入0到9之间的猜测数字:”);
guess=input.nextInt();
对于(int j=0;j

请注意,我选择在读取每个猜测时对其进行处理,而不是将其存储在数组中,然后再进行处理。

它是如何“工作不正常”的?请尝试正确格式化您的代码(大括号,意图),它使阅读变得非常容易。有一个在线代码格式化程序,什么在工作,什么不在工作?实际结果是什么,预期结果是什么?问题仅仅是您的实际结果与预期结果不匹配,还是发生了崩溃?还是根本无法编译?
int guess;
ArrayList<Integer> randomNumber = new ArrayList<Integer>();

for (int i = 0; i < 4; i++) {
   randomNumber.add(random.nextInt(LIMIT));
}

for (int i = 0; i < 4; i++) {
   System.out.print("Enter your guess number from 0 to 9: ");
   guess = input.nextInt();
   for (int j = 0; j < randomNumber.size(); ++j) {
      if (randomNumber.get(j) == guess) {
         ++totalCount;
         randomNumber.remove(j);
         break;
      }
   }
}
input.close();