类变量随机数...总是一样的? Android系统。

时间:2016-10-18 01:41:06

标签: java android random

我正在通过Udemy课程,我们正在构建一个基本的“更高或更低”的应用程序。我的应用程序本质上是有效的,但无论我销毁和重新启动活动多少次,它为我们选择的随机数总是相同的。

我的MainActivity.java

//mad import statements here

public class MainActivity extends AppCompatActivity {

    int correctNumber;

    @Override
    protected void onCreate(Bundle savedInstanceState) {
        super.onCreate(savedInstanceState);
        setContentView(R.layout.activity_main);

        int correctNumber = generateNum();

    }

    protected int generateNum(){
        Random rand = new Random();

        int randNum = rand.nextInt(100);

        return randNum;
    }

    protected void numberEval(View view) {

        EditText enteredNumber = (EditText) findViewById(R.id.numberEntry);
        String numberString = enteredNumber.getText().toString();
        Button pressMe = (Button) findViewById(R.id.button);



                int numToEval = Integer.parseInt(numberString);
                String result;
                TextView showWinLose = (TextView) findViewById(R.id.winLoseText);

                if (numToEval > correctNumber) {
                    result = "Too high!";
                } else if (numToEval < correctNumber) {
                    result = "Too Low!";
                }else {
                    result = "You guessed it!";
                }

                showWinLose.setText(result);

    }

}
超级超级基本,是吗?最初,我的numberEval()方法称为generateNum(),但后来我意识到每次按下按钮时都会生成一个新数字。所以我按照它的方式设置它,onCreate()只生成correctNumber一次,correctNumber现在是一个类变量。现在它不会在每次按键单击时生成新数字,但似乎根本不会生成新数字。无论我何时启动,关闭,重新启动等应用,它都会被置于0。

我该如何解决这个问题?提前致谢。

1 个答案:

答案 0 :(得分:0)

public class MainActivity extends AppCompatActivity {

    int correctNumber;

    @Override
    protected void onCreate(Bundle savedInstanceState) {
        super.onCreate(savedInstanceState);
        setContentView(R.layout.activity_main);

        int correctNumber = generateNum(); 
    }

// ...
}

onCreate()中的最后一行声明了一个名为correctNumber local 变量。这会隐藏具有相同名称的类字段,并且仅在onCreate()内可用。要解决此问题,请从此行中删除int,以便您改为使用类字段。