我正在制作更高或更低的游戏。我在游戏中需要一个随机数,但问题是我每次按下按钮猜测(应用程序使用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);
}
答案 0 :(得分:3)
问题是我每次按下按钮猜测随机 数字变化。
右。所以你需要改变它,所以它只发生一次。把它移到了
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);
}
答案 1 :(得分:2)
每次在此行上单击按钮时,您都要更改数字:
double number = Math.ceil(Math.random()* 20);
您必须从click()
中删除此行并将此值生成为onCreate()
方法并将其保存到以下字段中:
private double number;
@Override
protected void onCreate(Bundle savedInstanceState) {
super.onCreate(savedInstanceState);
setContentView(R.layout.activity_main);
this.number = Math.ceil(Math.random()* 20);
}
答案 2 :(得分:0)
如果我很清楚你想要什么,问题是你每次调用click方法时都会重新计算变量'number'。
变量'number'应该是一个类属性,只需计算一次或使用其他函数
private static double number;
public void click (View view) {
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");
}
}
protected void newNumber() {
number = Math.ceil(Math.random()* 20);
}
@Override
protected void onCreate(Bundle savedInstanceState) {
super.onCreate(savedInstanceState);
setContentView(R.layout.activity_main);
newNumber();
}