-1

入力をソートするのに苦労しています。最初に最低時間でソートしたいのです。私はJavaが初めてなので、数字のゲームを推測したことはあまりありませんが、ハイスコアを最低時間でソートすることはできません。

import java.io.*;
import java.util.*;

public class teeeeeeeeeeeeeeeeeeeeeeeeeeeeeeest {

    private static void  start() throws IOException {
        int number = (int) (Math.random() * 1001);
        BufferedReader reader;
        reader = new BufferedReader(new InputStreamReader(System.in));
        Scanner input = new Scanner(System.in);

        String scorefile = "p-lista_java";
        int försök = 0;
        int gissning = 0;
        String namn;
        String line = null;
        String y;
        String n;
        String val ;
        String quit = "quit";

        System.out.println("Hello and welcome to this guessing game" +
                "\nStart guessing it's a number between 1 and 1000:");

        long startTime = System.currentTimeMillis();
        while (true){   
            System.out.print("\nEnter your guess: ");
            gissning = input.nextInt();
            försök++;



            if (gissning == number ){
                long endTime = System.currentTimeMillis();
                long gameTime = endTime - startTime;
                System.out.println("Yes, the number is " + number + 
                        "\nYou got it after " + försök + " guesses " + " times in " + (int)(gameTime/1000) + " seconds.");
                System.out.print("Please enter your name: ");
                namn = reader.readLine();


                try {
                    BufferedWriter outfile
                            = new BufferedWriter(new FileWriter(scorefile, true));
                    outfile.write(namn + " " + försök +"\t" + (int)(gameTime/1000) + "\n");
                    outfile.close();
                } catch (IOException exception) {

                }


                break;

            }



             if( gissning < 1 || gissning > 1000 ){
                    System.out.println("Stupid guess! I wont count that..." );
                    --försök;
             }

             else if (gissning > number)
                System.out.println(" Your guess is too high");

            else
                System.out.println("Your guess is too low");
            }



            try {
                BufferedReader infile
                            = new BufferedReader(new FileReader(scorefile));
                while ((line = infile.readLine()) != null) {
                    System.out.println(line);
                }
                infile.close();
            } catch (IOException exception) {


        }

        System.out.println("Do you want to continue (Y/N)?");
           val=reader.readLine();

           if ((val.equals("y"))||(val.equals("Y"))){
               teeeeeeeeeeeeeeeeeeeeeeeeeeeeeeest.start();
           }
           else 
               System.out.print("Thanks for playing");
           System.exit(0);

    }
}   
4

1 に答える 1

2

すべてのスコア、時間、その他の詳細を保持する値オブジェクトを作成します。これらのホルダーの 2 つのコンポーネントを比較する Comparator を作成します。並べ替えは、コンパレータを使用してホルダーのセットを作成することで実現できます。

他のプロパティで別の順序で並べ替えたい場合は、必要に応じて Comparator を更新するだけです。

Holder {
    long time;
    int score;

    String name;
}

Comparator<Holder> {
    int compare( Holder holder, Holder other ){
       int result = holder.time - other.time;
       if( 0 == result ){
          result = holder.score - other.score;
       }
        return result;
   }
}
于 2012-09-18T01:56:41.720 に答える