随机数生成器问题 - Android Studio [英] Random number generator issue - Android Studio

查看:128
本文介绍了随机数生成器问题 - Android Studio的处理方法,对大家解决问题具有一定的参考价值,需要的朋友们下面随着小编来一起学习吧!

问题描述

我有一个随机数 (loadG1),在用户在 EditText 上按下 Enter 后输出.我在计时器结束时添加了一些 if 语句,以确保根据用户的分数输出一些特定的数字长度.每次他们的输入与 loadG1 匹配时,他们都会增加一个点.我的问题是有时在 3 点 (>=0) 之前输出的随机数上,我得到一个六位数.这仅在他们获得 3 分或更多分时才会发生.这也发生在其他阶段,例如: 7 位本应由 8 位输出.该模式似乎几乎完美运行,但有时会为该用户的分数输出超过限制的一位数.绝不能少一位,而是要适量,有时多一位.

I have a random number (loadG1) that is outputted after the user presses enter on an EditText. I added a few if statements near the end of the timer to ensure that a number of specific digit length is outputted depending on the user's score. They get a point added each time their input matches loadG1. My problem is that sometimes on the outputted randoms before 3 points (>=0), I get a six digit number. This is only meant to happen when they have 3 or more points. This also happens at other stages, e.g: 7 digits meant to be outputted by 8 are instead. The pattern seems to almost work perfectly, but at times one digit more than the limit is outputted for that user's score. Never one digit less, but either the right amount or sometimes one more.

代码如下:

final Random generateG1 = new Random();
            final int loadG1 = generateG1.nextInt(99999)+10000;
            final TextView number = (TextView) findViewById(R.id.number);
            number.setText(""+loadG1);

            final CountDownTimer loop = new CountDownTimer(3500, 1000) {
                @Override
                public void onTick(long millisUntilFinished) {
                }
                @Override
                public void onFinish() {
                    number.setVisibility(View.GONE);
                    final TextView prompt = (TextView) findViewById(R.id.prompt);
                    prompt.setVisibility(View.VISIBLE);
                    prompt.setText(" Enter the number");
                    final EditText input = (EditText) findViewById(R.id.enterAnswer);
                    input.setVisibility(View.VISIBLE);
                    input.setOnKeyListener(new View.OnKeyListener() {
                        @Override
                        public boolean onKey(View v, int keyCode, KeyEvent event) {
                            if (event.getAction() == KeyEvent.ACTION_DOWN) {
                                switch (keyCode) {
                                    case KeyEvent.KEYCODE_ENTER:
                                        Editable answer = input.getText();
                                        int finalAnswer = Integer.parseInt(String.valueOf(answer));
                                        int finalLoadG1 = Integer.parseInt(String.valueOf(number.getText()));
                                        input.setVisibility(View.GONE);
                                        prompt.setVisibility(View.GONE);
                                        if (finalAnswer == finalLoadG1) {
                                            score++;
                                        }

                                        number.setVisibility(View.VISIBLE);

                                        if (score>=0) {
                                            int loadG1 = generateG1.nextInt(99999)+10000;
                                            number.setText(""+loadG1);
                                        }
                                        if (score>=3){
                                            int loadG1 = generateG1.nextInt(999999)+100000;
                                            number.setText(""+loadG1);
                                        }
                                        if (score>=6){
                                            int loadG1 = generateG1.nextInt(9999999)+1000000;
                                            number.setText(""+loadG1);
                                        }
                                        if (score>=10){
                                            int loadG1 = generateG1.nextInt(99999999)+10000000;
                                            number.setText(""+loadG1);
                                        }

                                        input.getText().clear();

                                        start();

如果有人能告诉我是什么导致了这个错误,以及如何解决它,我将不胜感激.提前致谢.

Would greatly appreciate it if someone could tell me what's causing this error, and how to resolve it. Thanks in advance.

推荐答案

您需要更改条件.

  1. 要么颠倒 if 语句的顺序,要么

  1. Either reverse the order of if statements , or

添加<条件也适用于 if 语句.

Add < condition also to if statements.

也可以使用 else.

And make use of else also.

        if (score>=10){
            int loadG1 = generateG1.nextInt(99999999)+10000000;
            number.setText(""+loadG1);
        }
        else if (score>=6){
            int loadG1 = generateG1.nextInt(9999999)+1000000;
            number.setText(""+loadG1);
        }
        else if (score>=3){
            int loadG1 = generateG1.nextInt(999999)+100000;
            number.setText(""+loadG1);
        }else if (score>=0) {
            int loadG1 = generateG1.nextInt(99999)+10000;
            number.setText(""+loadG1);
        }

if (score>=0 && score<3) {
            int loadG1 = generateG1.nextInt(99999)+10000;
            number.setText(""+loadG1);
        }
        else if (score>=3 && score<6){
            int loadG1 = generateG1.nextInt(999999)+100000;
            number.setText(""+loadG1);
        }
        else if (score>=6 && score<10){
            int loadG1 = generateG1.nextInt(9999999)+1000000;
            number.setText(""+loadG1);
        }
        else if (score>=10){
            int loadG1 = generateG1.nextInt(99999999)+10000000;
            number.setText(""+loadG1);
        }

这篇关于随机数生成器问题 - Android Studio的文章就介绍到这了,希望我们推荐的答案对大家有所帮助,也希望大家多多支持IT屋!

查看全文
登录 关闭
扫码关注1秒登录
发送“验证码”获取 | 15天全站免登陆