簡體   English   中英

單擊正確的按鈕后得分不會高於1? (Java-Android Studio)

[英]Score not going higher than one upon correct button click? (Java - Android Studio)

在程序中,我有兩個隨機值(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);
            for(int allrbA=0; allrbA<4; allrbA++) {
                int rbvalue = randoms1.nextInt(9);
                if (rbvalue==loadG4) {
                    rbvalue=9;
                }
                selectrb[allrbA].setText(""+rbvalue);
            }
            selectrb[rbselector].setText(""+loadG4);

            if (score<4) {
                for (int allrbA = 0; allrbA < 4; allrbA++) {
                    selectrb[allrbA].setOnClickListener(new View.OnClickListener() {
                        @Override
                        public void onClick(View v) {
                            final 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);
                        }
                    });
                }
            }

            if (score<4) {
                for (int allrbA = 0; allrbA < 4; allrbA++) {
                    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) {
                                score++;
                                final 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 {
                                final 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);
                            }
                        }
                    });
                }
            }

我的問題是,即使用戶單擊存儲loadG4的按鈕多少次,得分也永遠不會高於1。 我還注意到,如果按下包含非loadG4值的按鈕,則將生成新值,並且按下保存新loadG4的下一個按鈕,分數也不會上升。 我的意圖是使程序每次用戶單擊包含當前loadG4值的按鈕時都添加一個點,這是您期望的。

在此先感謝任何能夠提供幫助的人。

問題是您要在多個具有不同范圍的位置中創建loadG4變量。 當您這樣做時:

final int loadG4 = GenerateG4.nextInt(10);

您正在創建一個新變量G4,它與實例變量loafG4分開存在,實例變量loafG4首先創建(並且永遠不會更改)。 因此,您總是將其與恆定值進行比較。

另外,您正在更改onClickListener內的按鈕文本的值,這就是為什么按鈕標簽在按下時會不斷變化的原因。

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM