在Java程序中得分不正确

时间:2016-11-27 14:54:30

标签: java android random

在程序中,我有两个随机值(loadG4和rbvalue)。这些值设置为4个按钮,rbvalue为3,loadg4设置为1(loadg4覆盖rbvalue按钮)。随机生成它们并随机分配给按钮。下面的代码中清楚地显示了任何其他细节。

这是我的代码:

final Random rbselection = new Random();
    final int rbselector = rbselection.nextInt(4);
    final Button[] selectrb = new Button[4];
    selectrb[0] = rb1;
    selectrb[1] = rb2;
    selectrb[2] = rb3;
    selectrb[3] = rb4;

int score = 0;
final Random GenerateG4 = new Random();
final int[] loadG4 = {GenerateG4.nextInt(10)};
final Random randoms1 = new Random();
final TextView number = (TextView) findViewById(R.id.number);

            number.setText(""+ loadG4[0]);
            for(int allrbA=0; allrbA<4; allrbA++) {
                int rbvalue = randoms1.nextInt(9);
                if (rbvalue== loadG4[0]) {
                    rbvalue=9;
                }
                selectrb[allrbA].setText(""+rbvalue);
            }
            selectrb[rbselector].setText(""+ loadG4[0]);

            if (score<4) {
                for (int allrbA = 0; allrbA < 4; allrbA++) {
                    final int rbselector = rbselection.nextInt(4);
                    selectrb[allrbA].setOnClickListener(new View.OnClickListener() {
                        @Override
                        public void onClick(View v) {
                            String getrbvalue = (String) selectrb[rbselector].getText();
                            loadG4[0] = GenerateG4.nextInt(10);
                            number.setText("" + loadG4[0]);
                            for (int allrbA = 0; allrbA < 4; allrbA++) {
                                int rbvalue = randoms1.nextInt(9);
                                if (rbvalue == loadG4[0]) {
                                    rbvalue = 9;
                                }
                                selectrb[allrbA].setText("" + rbvalue);
                            }
                            final int rbselector = rbselection.nextInt(4);
                            selectrb[rbselector].setText("" + loadG4[0]);
                        }
                    });
                }
            }

            if (score<4) {
                for (int allrbA = 0; allrbA < 4; allrbA++) {
                    final int rbselector = rbselection.nextInt(4);
                    selectrb[rbselector].setOnClickListener(new View.OnClickListener() {
                        @Override
                        public void onClick(View v) {
                            String getrbvalue = (String) selectrb[rbselector].getText();
                            int finalisesrbvalue = Integer.valueOf(getrbvalue);
                            if (finalisesrbvalue == loadG4[0]) {
                                score++;
                                int loadG4 = GenerateG4.nextInt(10);
                                number.setText("" + loadG4);
                                for (int allrbA = 0; allrbA < 4; allrbA++) {
                                    int rbvalue = randoms1.nextInt(9);
                                    if (rbvalue == loadG4) {
                                        rbvalue = 9;
                                    }
                                    selectrb[allrbA].setText("" + rbvalue);
                                }
                                final int rbselector = rbselection.nextInt(4);
                                selectrb[rbselector].setText("" + loadG4);
                            }

                            else {
                                loadG4[0] = GenerateG4.nextInt(10);
                                number.setText("" + loadG4[0]);
                                for (int allrbA = 0; allrbA < 4; allrbA++) {
                                    int rbvalue = randoms1.nextInt(9);
                                    if (rbvalue == loadG4[0]) {
                                        rbvalue = 9;
                                    }
                                    selectrb[allrbA].setText("" + rbvalue);
                                }
                                final int rbselector = rbselection.nextInt(4);
                                selectrb[rbselector].setText("" + loadG4[0]);
                            }
                        }
                    });
                }
            }

我的问题是,无论用户点击存储loadG4的按钮多少次,分数输出都是无序的。此按钮和loadG4的值不断变化,如上所示。例如,如果我计算应该是6分,我可能得到2分或3分。用户因错误的原因获得了积分,我不确定它是什么。我的目的是让程序在每次用户点击按住当前loadG4值的按钮时添加一个点,就像你期望的那样。

如果有人能解释我的问题的根源是什么,以及如何解决,我会感激不尽。非常感谢提前。

补充摘要(先阅读完整帖子):

有0个按钮的4个按钮和4个随机数,它们被生成并随机放入每个按钮中。 rbvalue在所有4个按钮中放置4次(每次随机)。然后,LoadG4在随机按钮中替换一个rb值。如果rbvalue等于loadG4,则将其设置为9以确保它与LOADG4永远不相同。如果用户单击其中包含LoadG4的按钮,则会获得一个点。当他们点击包含LoadG4的按钮时,他们意味着获得一个点,并且该按钮每次都是随机的。

注意:我已经上传了一个类似的问题,我已经知道了,道歉但我不得不重新发布,因为我的最后一个问题被忽略了。如果有人能帮助我澄清这一点,将不胜感激,谢谢。

0 个答案:

没有答案