所以我所拥有的是2 editText一个用于最小数量,一个用于最大数量,当用户点击该按钮时,应用程序在2个给定数字之间生成一个随机数(我得到它)但是如果用户输入了最大数量在最小数字字段中,应用程序崩溃我想要完成的是,如果用户输入最小数字字段中的最大数字,则将最大数字字段设置为最小数字+ 1并自动重试我尝试下面的代码并且其工作如果用户输入右侧的值,但如果用户在最小数字字段中输入了最大数量,则应用程序崩溃
Button gen = (Button)findViewById(R.id.button);
final EditText mini = (EditText)findViewById(R.id.mini);
final EditText maxi = (EditText)findViewById(R.id.maxi);
final TextView res = (TextView)findViewById(R.id.result);
final Random r = new Random();
final int[] number = {0};
gen.setOnClickListener(new View.OnClickListener() {
@Override
public void onClick(View view) {
int minn = Integer.parseInt(mini.getText().toString());
int maxx = Integer.parseInt(maxi.getText().toString());
if (minn>=maxx){
maxi.setText(minn+1);
maxx = Integer.parseInt(maxi.getText().toString());
number[0] = minn + r.nextInt(maxx - minn + 1);
res.setText(String.valueOf(number[0]));
}else{
number[0] = minn + r.nextInt(maxx - minn + 1);
res.setText(String.valueOf(number[0]));
}
}
});
}
答案 0 :(得分:1)
替换以下内容......
maxi.setText(minn+1);
使用...
maxi.setText(String.valueOf(minn+1));
将 int 值而不是 String 值传递到 setText 方法导致崩溃问题。
答案 1 :(得分:1)
我认为你应该这样做:
if (minn>=maxx){
maxi.setText(String.valueOf(minn));
mini.setText(String.valueOf(maxx));
maxx = Integer.parseInt(maxi.getText().toString());
minn = Integer.parseInt(minn.getText().toString());
number[0] = minn + r.nextInt(maxx - minn + 1);
res.setText(String.valueOf(number[0]));
}
number[0] = minn + r.nextInt(maxx - minn + 1);
res.setText(String.valueOf(number[0]));