【发布时间】:2016-10-19 18:06:54
【问题描述】:
我有一个名为“loadG1”的随机数变量,在用户在 EditText 上按 Enter 后输出。下面显示的 coe 底部有一些 if 语句,目的是根据用户的分数确定 loadG1 的长度(以数字表示)。每次输入与 loadG1 匹配时,用户都会获得一个点。我的问题是,有时在 3 点(>=0)之前输出的随机数上,我得到一个六位数。这仅在他们获得 3 分或更多分时才会发生。这也发生在其他阶段,例如: 7 位数字意味着由 8 输出。该模式似乎几乎可以完美运行,但有时会为该用户的分数输出超过限制的一位数。绝不会少一位数,但要适量,有时多一位。
代码如下:
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();
如果有人能告诉我导致此错误的原因以及解决方法,我将不胜感激。提前致谢。
【问题讨论】:
标签: java android android-studio random