みなさんこんばんは、こんな感じです。私の宝くじアプリケーションは機能しますが、最後に実装する必要があるだけで、これには大きな問題があります。したがって、「lotto.dat」ファイルに 6 つの数字が保存されています。1、2、3、4、5、6。新しい数字を取得することを選択しない場合、アプリは 6 つの新しい乱数を生成し、それらを比較します。これは機能します。
しかし、6 つの新しい数字が必要ない場合は、それらを ArrayList に保存し、それらを PrintStream で "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 に入力します。次に、上書きされる「lotto.dat」に配列リストをprintStreamします。
これは、乱数 (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 に保存された新しい数字が外部ファイル内に「[]」を持っていることです。