2017-09-01 74 views
-4

我的代码运行良好,但只是一次。我需要重复===>ok = (Button) findViewById(R.id.btnOk);
是点击。Java:使用(按钮)生成随机字符串

这是代码

String questionNumber = ""; 
EditText answer; 
Button ok; 
TextView question; 
@Override 
protected void onCreate(Bundle savedInstanceState) { 
    super.onCreate(savedInstanceState); 
    setContentView(R.layout.activity_main); 

    answer = (EditText) findViewById(R.id.answer); 
    ok = (Button) findViewById(R.id.btnOk); 
    question = (TextView) findViewById(R.id.TextViewQuestion); 

    Random random = new Random(); 
    questionNumber = String.format("%04d",random.nextInt(10000)); 
    question.setText(questionNumber); 


    ok.setOnClickListener(new View.OnClickListener() { 
     @Override 
     public void onClick(View view) { 


      if (answer.getText().toString().equals(questionNumber)) { 
       Toast.makeText(getBaseContext(),"Input True", Toast.LENGTH_LONG).show(); 

      } else { 
       Toast.makeText(getBaseContext(), "Input Wrong", Toast.LENGTH_LONG).show(); 
      } 


     } 
    }); 
} 
} 
+1

你想重复的代码是什么? –

+0

它就像quizz一样,我只是做了一次itu,但我想重新加载Button'ok'时点击。 – Jon

回答

1

做..

String questionNumber = ""; 
EditText answer; 
Button ok; 
TextView question; 
@Override 
protected void onCreate(Bundle savedInstanceState) { 
    super.onCreate(savedInstanceState); 
    setContentView(R.layout.activity_main); 

    answer = (EditText) findViewById(R.id.answer); 
    ok = (Button) findViewById(R.id.btnOk); 
    question = (TextView) findViewById(R.id.TextViewQuestion); 

    getRandomQuestion(); 


    ok.setOnClickListener(new View.OnClickListener() { 
     @Override 
     public void onClick(View view) { 
      if (answer.getText().toString().equals(questionNumber)) { 
       Toast.makeText(getBaseContext(),"Input True", Toast.LENGTH_LONG).show(); 
      } else { 
       Toast.makeText(getBaseContext(), "Input Wrong", Toast.LENGTH_LONG).show(); 
      } 

      getRandomQuestion(); 
     } 
    }); 
} 

private void getRandomQuestion() { 
    Random random = new Random(); 
    questionNumber = String.format("%04d",random.nextInt(10000)); 
    question.setText(questionNumber); 
} 

记得把getRandomQuestion()的检查之下,因为如果你把它上面的话,我相信它会一直显示输入错误敬酒,除非第一个随机数将是一样的第二随机数。

例如.. 您在onCreate中生成了一个随机问题,我们假设它是1 .. 然后,您将1放在editText中,因此您认为它应该显示Input True,对吗?但是,如果你把getRandomQuestion放在检查器上面,会发生什么是你将再次生成一个随机问题,那么它将是2 ..

然后,在你的检查器中..你的答案是1,那么问题是2。所以它不会是平等的。

+0

不客气。 :)我很高兴你能理解我的解释。 ^^ –

0

这里您的解决方案 把这个

Random random = new Random(); 
questionNumber = String.format("%04d",random.nextInt(10000)); 
question.setText(questionNumber); 

在按钮听者
编辑:

ok.setOnClickListener(new View.OnClickListener() { 
    @Override 
    public void onClick(View view) { 


     if (answer.getText().toString().equals(questionNumber)) { 
      Toast.makeText(getBaseContext(),"Input True", Toast.LENGTH_LONG).show(); 

     } else { 
      Toast.makeText(getBaseContext(), "Input Wrong", Toast.LENGTH_LONG).show(); 
     } 

     Random random = new Random(); 
     questionNumber = String.format("%04d",random.nextInt(10000)); 
     question.setText(questionNumber); 

    } 
}); 
+0

我在检查先生 – Jon

+0

Toast说“输入错误”,对于正确的输入 – Jon

+0

更新代码 –