繁体   English   中英

如何进行非重复随机数组选择(android)?

[英]how to make non-repeating random array selection (android)?

我有一个随机化值的问题。 我想做的是:

我有4个editFields,当我键入所有字段并单击“随机播放器”按钮时,它应该在viewText下面随机显示所有来自editFields的玩家,并且不重复。

这是我的onlick函数代码:

 public void RandomPlayers(View v1){


    EditText text1 = (EditText)findViewById(R.id.editText1);
    TextView View1 = (TextView)findViewById(R.id.player1);
    EditText text2 = (EditText)findViewById(R.id.editText2);
    TextView View2 = (TextView)findViewById(R.id.player2);
    EditText text3 = (EditText)findViewById(R.id.editText3);
    TextView View3 = (TextView)findViewById(R.id.player3);
    EditText text4 = (EditText)findViewById(R.id.editText4);
    TextView View4 = (TextView)findViewById(R.id.player4);

    String value1 = text1.getText().toString();
    String value2 = text2.getText().toString();
    String value3 = text3.getText().toString();
    String value4 = text4.getText().toString();

    String[] players = {value1, value2, value3, value4};

    int index = new Random().nextInt(players.length);
    String random = (players[index]);
    View1.setText(random);
    View2.setText(random);
    View3.setText(random);
    View4.setText(random);

}

但问题是我一直为所有Textviews获得相同的随机名称

这是一个显示逻辑错误的图像:![在此输入图像描述] [1]

请帮帮我,告诉我我的错误谢谢

尝试这个解决方案就像一个魅力

public void RandomPlayers(View v1) {

        List<String> values = new ArrayList<String>();

        EditText text1 = (EditText) findViewById(R.id.editText1);
        TextView View1 = (TextView) findViewById(R.id.player1);
        EditText text2 = (EditText) findViewById(R.id.editText2);
        TextView View2 = (TextView) findViewById(R.id.player2);
        EditText text3 = (EditText) findViewById(R.id.editText3);
        TextView View3 = (TextView) findViewById(R.id.player3);
        EditText text4 = (EditText) findViewById(R.id.editText4);
        TextView View4 = (TextView) findViewById(R.id.player4);

        values.add(text1.getText().toString());
        values.add(text2.getText().toString());
        values.add(text3.getText().toString());
        values.add(text4.getText().toString());

        Collections.shuffle(values);

        View1.setText(values.get(0));
        View2.setText(values.get(1));
        View3.setText(values.get(2));
        View4.setText(values.get(3));

    }

您只生成一个随机数,因此索引始终相同,并且您只在所有TextView中获得一个名称。 您可以按照此处的说明对数组进行随机播放并从中获取所有名称并将它们绑定到TextView。

您为所有视图设置相同的随机值意味着您选择随机一次然后分配它您应该做类似的事情但在每次分配之前再次调用随机

更改

int index = new Random().nextInt(players.length);
String random = (players[index]);
View1.setText(random);
View2.setText(random);
View3.setText(random);
View4.setText(random);

int index = new Random().nextInt(players.length);
String random = (players[index]);
View1.setText(random);

index = new Random().nextInt(players.length);
random = (players[index]);
View2.setText(random);

index = new Random().nextInt(players.length);
random = (players[index]);
View3.setText(random);

index = new Random().nextInt(players.length);
random = (players[index]);
View4.setText(random);

这样你得到不同的数字,但不能保证没有重复

暂无
暂无

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM