大家好,所以情况就是这样。我的乐透应用程序工作,但我只需要最后一件事来实现,我有一个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;在外部文件中。
答案 0 :(得分:0)
你说
但是如果我想要6个新数字,将它们保存在ArrayList中并将它们打印到#34; lotto.dat&#34;,该文件现在包含带有arrayList的括号cus的6个数字。
考虑到您上面的陈述,您的代码会出现问题,因为当扫描程序看到括号时,您的while循环将立即退出并且不会在您的数组中包含任何int
while(sc.hasNextInt()){
mn.add(sc.nextInt());}
现在您的问题很明显,您可以尝试使用for循环来写入文件,以防止这些括号包含在您的文件中,或者您可以使用正则表达式在读取之前消除文件中不是int的字符。