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();

然后在吐司上我得到正确的结果,按钮完全不同,其中两个甚至三个具有相同的值。我的错误在哪里?

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 回答
0
numGen.listNums()

每次返回一个新的随机列表。

于 2013-04-18T14:29:11.407 回答