Java 将edittext输入转换为整数
尝试评估一个简单数学问题的正确答案。这是获取输入并将其转换为一个int以与另一个int进行比较的正确方法吗Java 将edittext输入转换为整数,java,android,math,Java,Android,Math,尝试评估一个简单数学问题的正确答案。这是获取输入并将其转换为一个int以与另一个int进行比较的正确方法吗 public void checkAnswer(){ int mm; //answer = editText.getText().toString(); mm = Integer.parseInt(editText.getText().toString()); if (mm == correctAnswer){
public void checkAnswer(){
int mm;
//answer = editText.getText().toString();
mm = Integer.parseInt(editText.getText().toString());
if (mm == correctAnswer){
score++;
scoredisplay.setText("" + score);
}
下面是我如何设置正确答案的
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;
这很好,只需确保editText不为null,并且文本为实际数字
否则它将抛出nullpointerexception或numberformatexception。我认为由于getQuestion中的最后一对if/else,您的分数每次都可能下降 假设i1==1,程序将执行第一个代码块并设置correctAnswer。 然而,当它到达“if(i1==4){”行时,它将比i1!=4更准确,并将移动到else,这将使分数递减 如果只删除以下几行,是否有效
else{
score--;
scoredisplay.setText("" + score);
}
编辑
我刚才看到了你关于这个问题的另一个问题,其中有几行:
case R.id.keypad_hash:
getQuestion();
checkAnswer();
这看起来也很奇怪,因为getQuestion()将在检查其是否正确之前更改correctAnswer!如果将这些行的顺序切换为:
case R.id.keypad_hash:
checkAnswer();
getQuestion();
你知道为什么它认为每个答案都是错误的吗?我通过显示它来检查correctAnswer,它们是正确的。我编辑了这个问题。@Abs90你的意思是没有eroor,只有else部分id被执行?@Abs90我们无法从你的代码中看出你是如何设置correctAnswer的。你应该(以某种方式)输出它mm和correctAnswer的值,或者使用调试器查看这些值,如果在Android中可能的话。确保使用%运算符将i1钳制在0和4之间。另外,确保只调用一次getQuestion,否则“正确”的答案每次都会更改。正如toto2所说,还可以尝试输出mm的值。(使用Log.d()int-Min=1;int-Max=4;int-i1=Min+(int)(Math.random()*((Max-Min)+1));那会在0-4之间拍手,对吗?嘿,谢谢你,伙计,我把它们交换了一下,现在计数器开始工作了!你知道我怎么把问题的数量限制在10个,然后在最后显示用户的分数吗?假设我需要某种循环。