0

「25」、「50」、「75」、「100」の文字列配列があり、以下のメソッドを使用してリストの項目の位置をシャッフルしています。

public List<String> listNums() {

    List<String> numList = Arrays.asList(Nums);

    Collections.shuffle(numList);
    return numList;

リスト項目を 4 つのボタンに割り当てるこの方法もあります。

protected void SetTxtNums(){
    NumGenerator numGen = new NumGenerator();

    bNum2.setText(numGen.listNums().get(0).toString());
    bNum3.setText(numGen.listNums().get(1).toString());
    bNum4.setText(numGen.listNums().get(2).toString());
    bNum5.setText(numGen.listNums().get(3).toString());
}

そして、別のボタンをクリックしてテキストを上記のボタンに変更しようとしていますが、機能しません。onClick コードは次のとおりです。

case R.id.bNumGen:
        SetTxtNums();           
        break;

問題は、重複する値が生成されることです。変更する位置だけで、すべてのボタンに異なる番号を付けたいです。

次のようなテスト用のトーストを含めると:

Toast.makeText(getApplicationContext(), numGen.listBigNums().toString(), Toast.LENGTH_LONG).show();

次に、トーストで正しい結果が得られます。ボタンは完全に異なり、2つまたは3つでも同じ値です。私の間違いはどこですか?

4

2 に答える 2

1

まず第一に、必要なリストではなく異なるリストでシャッフルしました.そして第二に、あなたのロジックは間違っています.このようなことを試してください.

List<String> numList = Arrays.asList(Nums);
public List<String> listNums() {
return numlist;
}

public void shuffleList() {
    Collections.shuffle(intList);
    return numList;
}

今このようにしてください:

protected void SetTxtNums(){
    NumGenerator numGen = new NumGenerator();
    numGen.shuffleList();

    bNum2.setText(numGen.listNums().get(0).toString());
    bNum3.setText(numGen.listNums().get(1).toString());
    bNum4.setText(numGen.listNums().get(2).toString());
    bNum5.setText(numGen.listNums().get(3).toString());
}
于 2013-04-18T14:26:34.570 に答える