java - 我想在非静态类中使用静态随机数。 ( java )

标签 java random static

我正在制作一个更高或更低的游戏。我的游戏中需要一个随机数,但问题是每次我按下按钮进行猜测(应用程序使用 EditText 中的数字进行比较)随机数都会发生变化。所以我使用了静态,但现在的问题是函数 findViewById 不再工作,因为它不是静态的。

这是我的代码:

public static void click (View view) {
    double number = Math.ceil(Math.random()* 20);

    EditText textIn = (EditText) findViewById(R.id.textIn);

    int givenN = Integer.parseInt(textIn.getText().toString());

    if (number > givenN) {
        System.out.println("Higher");
    } else if (number == givenN){
        System.out.println("Good!");
    } else if (number < givenN) {
        System.out.println("Lower");
    }
}

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

最佳答案

The problem is each time that I press the button to guess the random number changes.

对。所以你需要改变它,让它只发生一次。将其移至 onCreate 方法对我来说似乎足够合理:

private double number = -1;

public void click (View view) // Note: no longer static.
{
    EditText textIn = (EditText) findViewById(R.id.textIn);
    int givenN = Integer.parseInt(textIn.getText().toString());
    if (number > givenN) {
        System.out.println("Higher");
    } else if (number == givenN){
        System.out.println("Good!");
    } else if (number < givenN) {
        System.out.println("Lower");
    }
}

@Override
protected void onCreate(Bundle savedInstanceState) {
    super.onCreate(savedInstanceState);
    setContentView(R.layout.activity_main); 
    number = Math.ceil(Math.random()* 20);
}

关于java - 我想在非静态类中使用静态随机数。 ( java ),我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/45062074/

相关文章:

c# - 快速连续的随机数

sql - 创建 10 个不同的随机数

在冒险游戏中随机连接房间

JAVA:使用类名和实例对象调用静态方法之间的区别

java - 在java中调用父构造函数中的子构造函数

java - tomcat 在内存不足错误时不生成 hprof 文件

java - JmDns.create 不绑定(bind)到 InetAdess

java - 通过两个不同的按钮播放两个不同的声音文件?

c# - 如何使标签静态化

c++ - 如何检查主函数是否被调用?