如何比较文件中的数字与随机数?

时间:2014-10-31 01:00:27

标签: java methods arraylist printstream

大家好,所以情况就是这样。我的乐透应用程序工作,但我只需要最后一件事来实现,我有一个huuuuge问题。所以我在" lotto.dat"中保存了6个数字。文件。 1,2,3,4,5,6。如果我没有选择获取新号码,该应用程序会生成6个新的随机数并进行比较。这有效。

但是如果我想要6个新数字,将它们保存在ArrayList中并将它们打印到#34; lotto.dat",该文件现在包含带有arrayList的括号cus的6个数字。我有一种感觉,这可能是问题,因为当新数字被保存时,它表示即使存在也没有匹配。

这是我的数字方法:

  Scanner scann = new Scanner(System.in);

  File f = new File("lotto.dat");

  PrintStream output = new PrintStream(f);

  output.print(num1 + " " + num2 + " " + num3 + " " + num4 + " " + num5 + " " + num6);

  System.out.println("Your lotto numbers: " + num1 + " " + num2 + " " + num3 + " " + num4 + " " + num5 + " " + num6);

  System.out.println("Would you like to keep these numbers? y/n");

  String yn = scann.nextLine();

  if(!yn.equals("y")){

     newNumbers();

  }//While yn !y

在我的newNumbers方法中,我用一个在控制台中编写的6个newNumbs填充一个ArrayList。然后我将这个arraylist printStream到" lotto.dat"得到了淹没。

现在这是我的代码,我比较随机数(ArrayList中的数字):

  for(int n : numbers) {      // go through all the numbers in the list

     String match = doCompare(n);  // doCompare metode

     if(match.equals("true")){

        List<Integer> numbersMatch = new ArrayList<>();

           numbersMatch.add(n);

        Thread.sleep(1000);
        System.out.println();
        System.out.println("Match on the number: " + n);

        count++;
     } 
  }

这是我的doCompare方法:

  Scanner sc = new Scanner(new File("lotto.dat"));

  List<Integer> mn = new ArrayList<>();

  while(sc.hasNextInt()){
     mn.add(sc.nextInt());    
  }

  if(mn.contains(n)){

     String tf = "true";
     return tf;

  }
  else{

     String tf = "false";
     return tf;

  }

我花了很多时间试图解决问题,但我不能。为什么不比较这些数字呢?唯一真正改变的是,lotto.dat中保存的新数字有&#34; []&#34;在外部文件中。

1 个答案:

答案 0 :(得分:0)

你说

  

但是如果我想要6个新数字,将它们保存在ArrayList中并将它们打印到#34; lotto.dat&#34;,该文件现在包含带有arrayList的括号cus的6个数字。

考虑到您上面的陈述,您的代码会出现问题,因为当扫描程序看到括号时,您的while循环将立即退出并且不会在您的数组中包含任何int

 while(sc.hasNextInt()){
 mn.add(sc.nextInt());}

现在您的问题很明显,您可以尝试使用for循环来写入文件,以防止这些括号包含在您的文件中,或者您可以使用正则表达式在读取之前消除文件中不是int的字符。