这就是我得到的。我可以看到两个数组但是在比较时我得到了一个错误的答案。我在编译和运行时得到了很多错误的输出但是输入了36个结果(布尔值)我得到180个布尔结果。
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");``
}
}
}}}
答案 0 :(得分:2)
对我来说它打印216个布尔值,因为应该打印36的函数执行6次,对于lotto.dat
中的每个整数,你只需要改变:
while(dat.hasNextInt())
{
userNumber[i++]=dat.nextInt();
System.out.println("");
doCompare(lottoNumber, userNumber);
}
到
while (dat.hasNextInt())
{
userNumber[i++] = dat.nextInt();
}
System.out.println(); //<-- Do the newline out of the loop too
doCompare(lottoNumber, userNumber);
现在您的输出将是一行,包含36个布尔值:
falsefalsefalsefalsefalsefalsefalsefalsefalsefalsefalsefalsefalsefalseTruefalsefalsefalseTruefalsefalsefalsefalsefalsefalsefalsefalsefalsefalsefalsefalsefalsefalsefalsefalsefalse
答案 1 :(得分:2)
您在填充userNumber
之前与文件中的所有数字进行比较。您只需将语句doCompare(lottoNumber, userNumber)
移到while循环之外:
while (dat.hasNextInt()) {
userNumber[i++] = dat.nextInt();
System.out.println("");
//doCompare(lottoNumber, userNumber);
}
doCompare(lottoNumber, userNumber);
答案 2 :(得分:1)
你有这个:
while(dat.hasNextInt())
{
userNumber[i++]=dat.nextInt();
System.out.println("");
doCompare(lottoNumber, userNumber);
}
每次从文件中读取数字时,都在运行比较。你想要做的事情就是从文件中读取所有内容,然后运行比较 - 所以你应该这样做。你可能的意思是:
while(dat.hasNextInt())
{
userNumber[i++]=dat.nextInt();
System.out.println(""); // <- This probably isn't useful, either.
}
doCompare(lottoNumber, userNumber);
顺便说一下,如果你得到180个结果,因为5 * 36 = 180表示你只是从文件中读取5个数字。你确定文件中有6个数字,或者你真的得到216个结果吗?
答案 3 :(得分:1)
由于每次从文件中读取下一个数字时都在运行doCompare函数,因此您运行此例程6 * 36次;因为你只得到180个结果,看起来你的文件中没有6个数字,但很可能只有5个!
移动你的doCompare() - 在while (dat.hasNextInt())
循环之外调用你应该没问题!