试图评估一个简单的数学问题的正确答案。这是正确的方法来获取输入并将其转换为int与另一个int comared?
public void checkAnswer(){
int mm;
//answer = editText.getText().toString();
mm = Integer.parseInt(editText.getText().toString());
if (mm == correctAnswer){
score++;
scoredisplay.setText("" + score);
}
这是我如何设置correctAnswer
public void getQuestion(){
random1 = (int)(Math.random()*100);
random2 = (int)(Math.random()*10);
int i1 = Min + (int)(Math.random() * ((Max - Min) + 1));
if(i1 == 1){
question = (random1 + "+" + random2);
correctAnswer = random1 + random2;
editTextEquation.setText(question);
}
if(i1 == 2){
question = (random1 + "-" +random2);
correctAnswer = random1 - random2;
editTextEquation.setText(question);
}
if(i1 == 3){
question = random1 + "/" +random2;
correctAnswer = random1 / random2;
editTextEquation.setText(question);
}
if(i1 == 4){
question = (random1 + "*" +random2);
correctAnswer = random1 * random2;
editTextEquation.setText(question);
}
else{
score--;
scoredisplay.setText("" + score);
}
按钮
@Override
public void onClick(View v){
switch(v.getId()){
case R.id.keypad_hash:
getQuestion();
checkAnswer();
break;
答案 0 :(得分:1)
我认为由于getQuestion中的最终if / else对,您的得分可能每次都会下降。
假设i1 == 1,程序将执行第一个代码块并设置correctAnswer。 然而,当它到达“if(i1 == 4){”时它会发现比i1!= 4并且将移动到其他地方,这会减少得分。
如果您只是删除以下行,它是否有效?
else{
score--;
scoredisplay.setText("" + score);
}
修改
我刚刚看到你的另一个问题与这个问题有关,并且在其中你有以下几行:
case R.id.keypad_hash:
getQuestion();
checkAnswer();
这也看起来很奇怪,因为getQuestion()会在检查它是否正确之前更改correctAnswer!如果将这些行的顺序切换为:
,也许它会更好case R.id.keypad_hash:
checkAnswer();
getQuestion();
答案 1 :(得分:0)
没关系,只要确保editText不为null,并且文本是实际数字。
否则会抛出nullpointerexception或numberformatexception。