2012-03-06 102 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