0

スクラブルアプリを作っていて、トップスコアシステムを作りたいです。プレイヤーの名前とそれに対応するスコアが保存される配列の作成を開始しました。スコアの配列を並べ替えて、最高から最低に並べ替え、対応する名前とともにスコアを (降順で) 出力したいと考えています。スコアを並べ替えて、対応するプレーヤー名とともに出力する方法を教えてください。どんな助けでも大歓迎です。ありがとうございました!

これが私がこれまでに持っているものです:

public class MainTop extends Activity {

TextView show;
EditText name;
EditText score;
Button ok;


@Override
protected void onCreate(Bundle savedInstanceState) {
    super.onCreate(savedInstanceState);
    setContentView(R.layout.layouttop);

    show = (TextView) findViewById(R.id.textView1);
    name = (EditText) findViewById(R.id.editText1);
    score = (EditText) findViewById(R.id.editText2);

    ok = (Button) findViewById(R.id.button1);

    ok.setOnClickListener(new View.OnClickListener() {

        @Override
        public void onClick(View v) {
            // TODO Auto-generated method stub

        String [] namearray = new String [4];
        int [] scorearray = new int[4];

        for (int i = 0; i < 4; i++){
            String playername = name.getText().toString();
            namearray[i] = playername;

            String playerscorestr = score.getText().toString();
            int playerscore = Integer.parseInt(playerscorestr);
            scorearray[i] = playerscore;

            show.setText(namearray[i] + scorearray[i]);

        }
4

3 に答える 3

4

を表すクラスを作成するとよいでしょうPlayerscore、などのプロパティがありname、クラスにインターフェイスをPlayer実装して、オブジェクトの並べ替え方法を指定できるようにします。Comparable

それができたらList、プレーヤーの を作成し、それを使用Collections.sort()してオブジェクトを並べ替えることができPlayerます。

于 2013-02-25T07:47:45.957 に答える
1

このようにプレーヤークラスを作成します

public class LabelModel {

    public ArrayList<LabelModel> labelModels;
    public String labelId, labelName;

    public ArrayList<LabelModel> getLabelModels() {
        return labelModels;
    }

    public void setLabelModels(ArrayList<LabelModel> labelModels) {
        this.labelModels = labelModels;
    }

    public String getLabelId() {
        return labelId;
    }

    public void setLabelId(String labelId) {
        this.labelId = labelId;
    }

    public String getLabelName() {
        return labelName;
    }

    public void setLabelName(String labelName) {
        this.labelName = labelName;
    }

}

配列リストを次のように設定します

for (int i = 0; i < length; i++) {
        labelModel = new LabelModel();
        JSONObject labeljson = jsonArray.getJSONObject(i);
        labelModel.setLabelId("id");
        labelModel.setLabelName("player name");
        labelarray.add(labelModel);
        }
于 2013-02-25T07:49:00.787 に答える
0

スコアとプレーヤーをどこで関連付けているかはわかりませんが、スコアとプレーヤーがこのようなものである場合は、これを試すことができます

        int[] scores={10,50,20,60};
        String[] players={"player1","player2","player3","player4"};
        Hashtable<String, String> playerdetails=new Hashtable<String, String>();
        ArrayList scoreslist=(ArrayList) Arrays.asList(scores);
        for(int i=0;i<scores.length;i++)
        {
            playerdetails.put(String.valueOf(scores[i]), players[i]);
        }
        Collections.sort(scoreslist);
        for(int i=0;i<scoreslist.size();i++)
        {
            show.setText(scoreslist.get(i)+"    "+playerdetails.get(scoreslist.get(i)));
        }
于 2013-02-25T09:23:22.757 に答える