2012-03-06 3 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); 

    } 

내가

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); 
    } 

correctAnswer

설정하는 방법입니다 버튼을 바로 확인 EDITTEXT 텍스트를 가리키고 숫자입니다 null이 아니고, 확인 괜찮

@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); 
} 

편집

난 그냥 다른 질문이 문제와 관련된 그 안에 당신이 라인이 본 : 전에 correctAnswer 변경됩니다)

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

이것은 또한 getQuestion (같은 이상한 모양을 당신은 그것이 맞는지 여부를 확인합니다! 아마도이 줄의 순서를 다음과 같이 바꾸면 더 잘 작동 할 것입니다 :

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