2012-03-06 144 views
0

试图评估一个简单的数学问题的正确答案。这是正确的方式去抓取输入并将其转换为一个int以便与另一个int共处吗?将edittext输入转换为整数

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; 

回答

1

由于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(); 
+0

嘿,谢谢兄弟,我换了他们,柜台正在工作!您是否知道我如何将问题数量限制为10,然后在最后显示用户分数?假定我需要某种循环。 – Abs90 2012-03-06 19:49:43

0

这很好,只要确保EDITTEXT不为空,并且该文本是逸岸数字。

否则它会抛出nullpointerexception或numberformatexception。

+0

您是否知道为什么它会将每个答案视为错误?我通过显示它来检查correctAnswer,它们是正确的。我编辑了这个问题。 – Abs90 2012-03-06 18:14:14

+0

@ Abs90你的意思是没有eroor在那里,只有其他部分id被执行? – 2012-03-06 18:17:40

+0

@ Abs90我们无法从您的代码中知道如何设置correctAnswer。您应该输出(以某种方式)mm和correctAnswer的值,或者使用调试器查看这些值(如果Android中可能的话)。 – toto2 2012-03-06 18:24:49