这就是我得到的。我可以看到这两个数组,但在比较时我得到了错误的答案。编译和运行时我得到很多 false 作为输出,但插入了 36 个结果( boolean 值),我得到了 180 个 boolean 结果。
import java.io.*;
import java.util.*;
public class Lotto {
/**
* @param args the command line arguments
*/
public static void main(String[] args) throws FileNotFoundException
{
userNumbers();
drawNumbers();
}
public static void userNumbers()throws FileNotFoundException
{
Scanner in = new Scanner(new FileReader("lotto.dat")); //In this file there is 6 integer
while(in.hasNext())
{
if(in.hasNextInt())
{
//in.next();
System.out.println(in.nextLine());
}
else
System.out.print(in.next()+ " ");
}
}
public static void drawNumbers() throws FileNotFoundException
{
int N = 6;// 6 Random Numbers
int[] lottoNumber = new int[N];
int[] userNumber = new int[N];
//This generate random numbers of size N
for (int i = 0; i < N; i++)
{
Random n = new Random();
lottoNumber[i] = n.nextInt(20)+1;
System.out.print(lottoNumber[i]+" ");
}
Scanner dat = new Scanner(new FileReader("lotto.dat"));
int i=0;
while(dat.hasNextInt())
{
userNumber[i++]=dat.nextInt();
System.out.println("");
doCompare(lottoNumber, userNumber);
}
}
public static void doCompare(int[] a, int[] b) {
for(int i = 0; i < a.length; i++)
{
for(int j = 0; j < b.length; j++)
{
if(a[i] == b[j])
{
System.out.print("True");//true
}
else
{
System.out.print("false");``
}
}
}}}
最佳答案
您正在使用文件中的所有数字填充 userNumber
之前进行比较。您只需将语句 doCompare(lottoNumber, userNumber)
移到 while 循环之外即可:
while (dat.hasNextInt()) {
userNumber[i++] = dat.nextInt();
System.out.println("");
//doCompare(lottoNumber, userNumber);
}
doCompare(lottoNumber, userNumber);
关于java - 如何比较两个数组。一个数组从文件中获取,另一个数组是随机数?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/22552874/