2012-03-06 24 views
0

簡単な数学の質問に対する正解を評価しようとしています。これは、入力を取得し、別のintとcomaredする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); 
    } 

だけEDITTEXTがnullでなく、テキストがInfactは数字であることを確認して、大丈夫ですボタン

@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){if "i1!= 4"になり、elseに移動してスコアを減少させます。

次の行を削除するだけで動作しますか?

else{ 
    score--; 
    scoredisplay.setText("" + score); 
} 

私はこの問題に関連し、あなたの他の質問を見てきましたし、その中にあなたがライン持っEDIT

:)これもgetQuestion(と奇妙に見える

case R.id.keypad_hash: 
    getQuestion(); 
    checkAnswer(); 

は前correctAnswerを変更しますあなたはそれが正しいかどうかをチェックする!おそらく、これらの行の順序を次のように変更すると、より良い結果が得られます。

case R.id.keypad_hash: 
    checkAnswer(); 
    getQuestion(); 
+0

ねえ、ありがとう、私はそれらを交換し、カウンターは今働いている!質問の数を10に制限し、最後にユーザーのスコアを表示する方法について知っていますか?私はある種のループが必要だとします。 – Abs90

0

を設定する方法です。

それ以外の場合は、nullpointerexceptionまたはnumberformatexceptionがスローされます。

+0

なぜすべての回答が間違っていると思いますか?私はcorrectAnswerを表示してチェックしたが正しい。私は質問を編集しました。 – Abs90

+0

@ Abs90あなたはそこそこではないことを意味し、他の部分のIDだけが実行されていますか? –

+0

@ Abs90あなたのコードからcorrectAnswerをどのように設定するかはわかりません。 Androidで可能ならば、mmとcorrectAnswerの値を(何とか)出力するか、デバッガを使ってそれらの値を表示する必要があります。 – toto2

関連する問題