1

大家好,就是这样。我的乐透应用程序有效,但我只需要最后一件事来实现,我对此有一个非常大的问题。所以我有 6 个号码保存在“lotto.dat”文件中。1, 2, 3, 4, 5, 6。如果我不选择获取新数字,应用程序会生成 6 个新的随机数字并进行比较。这行得通。

但是如果我不想要 6 个新数字,请将它们保存在 ArrayList 中并将它们打印流到“lotto.dat”中,该文件现在包含 6 个数字,其中包含 arrayList 事物的括号 cus。我有一种感觉,这可能是问题所在,因为当保存新号码时,它说即使有也没有匹配。

这是我的数字方法:

  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 打印到被覆盖的“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 中的新号码在外部文件中有“[]”。

4

1 回答 1

0

你说

但是如果我不想要 6 个新数字,请将它们保存在 ArrayList 中并将它们打印流到“lotto.dat”中,该文件现在包含 6 个数字,其中包含 arrayList 事物的括号 cus。

考虑到上面的语句,下面的代码会出现问题,因为当扫描仪看到括号时,您的 while 循环将立即退出并且数组中没有任何 int

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

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

于 2014-10-31T03:36:53.150 回答