1

みなさんこんばんは、こんな感じです。私の宝くじアプリケーションは機能しますが、最後に実装する必要があるだけで、これには大きな問題があります。したがって、「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 に保存された新しい数字が外部ファイル内に「[]」を持っていることです。

4

1 に答える 1

0

あなたが言った

しかし、6 つの新しい数字が必要ない場合は、それらを ArrayList に保存し、それらを PrintStream で "lotto.dat" に保存します。ファイルには、arrayList の括弧 cus が付いた 6 つの数字が含まれるようになりました。

上記のステートメントを考慮すると、以下のコードで問題が発生します。これは、スキャナーがブラケットを検出すると、while ループがすぐに終了し、配列に int がないためです。

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

問題が明確になったので、ファイルに書き込むための for ループを使用して、これらの括弧がファイルに含まれないようにするか、正規表現を使用して int ではない文字をファイルから削除してから読み取ることができます。

于 2014-10-31T03:36:53.150 に答える