2012-09-04 6 views
0

프로그램은 두 자릿수와 사인을 그립니다. IF 문이 그려져 있는지 확인합니다. +/-. + add를 뽑으면, -는 빼기입니다.안드로이드 이상한 행동 "프로그램"

그리기 작업.

그러면 사용자에게 작업 결과가 제공됩니다. 그리고 여기에 문제가 있습니다.

"결과"에있는 결과를 제공하면. 기능이 있다면. 입력 한 내용이 정확하지 않으면 토스트 : 다시 시도하십시오.

문제는 때로는 좋은 결과를주는 것으로 표시됩니다. 다시 시도하십시오.

이 문제를 제거하려면 어떻게해야합니까? 다른 수표?

코드 :

private String sign; 
    private int numberOne, numberTwo, result = 0; 
    private int charsEntered = 0; 
    private EditText et; 
    private Button ok; 
    String[] CHAR = { "+", "-" }; 
    Random intGen = new Random(); 
    CaptchaInterface.OnCorrectListener mCorrectListener; 

    public void setOnCorrectListener(CaptchaInterface.OnCorrectListener listener) { 
     mCorrectListener = listener; 
    } 

    public EasyMathCaptcha(Context context) { 
     super(context); 
     getWindow().requestFeature(Window.FEATURE_NO_TITLE); 
    } 

    public static int randomOne() { 
     Random generator = new Random(); 
     int x = generator.nextInt(10); 
     return x; 
    } 

    public static int randomTwo() { 
     Random generator = new Random(); 
     int x = generator.nextInt(10); 
     return x; 
    } 

    public void onCreate(Bundle icicle) { 
     setContentView(R.layout.all_math_captcha); 

     sign = (CHAR[Math.abs(intGen.nextInt() % 2)]); 
     numberOne = randomOne(); 
     numberTwo = randomTwo(); 

     TextView display = (TextView) findViewById(R.id.tvRandomTask); 
     display.setText(numberOne + " " + sign + " " + numberTwo); 

     if ((CHAR[Math.abs(intGen.nextInt() % 2)]).equals("+")) { 
      result = (numberOne + numberTwo); 
     } else if ((CHAR[Math.abs(intGen.nextInt() % 2)]).equals("-")) { 
      result = (numberOne - numberTwo); 
     } 

     et = (EditText) findViewById(R.id.etTask); 
     ok = (Button) findViewById(R.id.btAgree); 
     ok.setOnClickListener(this); 

    } 

    public void onClick(View arg0) { 
     // TODO Auto-generated method stub 
     try { 
      charsEntered = Integer.parseInt(et.getText().toString()); 
     } catch (NumberFormatException nfe) { 
      Toast.makeText(et.getContext(), "That's not a number!", 
        Toast.LENGTH_SHORT).show(); 
     } 

     if (charsEntered == result) { 
      if (mCorrectListener != null) 
       mCorrectListener.onCorrect(); 
      dismiss(); 

     } else if (charsEntered != result) { 
      Toast.makeText(et.getContext(), "Try again!", Toast.LENGTH_SHORT) 
        .show(); 
     } 

    } 
} 

답변

2

오류는 다음 코드입니다 :

당신은 당신이 처음으로 준 것과 다른 결과를 줄 수있는 난수 생성기를 사용하는
if ((CHAR[Math.abs(intGen.nextInt() % 2)]).equals("+")) { 
     result = (numberOne + numberTwo); 
    } else if ((CHAR[Math.abs(intGen.nextInt() % 2)]).equals("-")) { 
     result = (numberOne - numberTwo); 
    } 

.

변경이로 :

if (sign.equals("+")) { 
     result = (numberOne + numberTwo); 
    } else if (sign.equals("-")) { 
     result = (numberOne - numberTwo); 
    } 
+0

좋아 I가 변경되었습니다. 확인 중. – Defuzer

+0

그것은 작동합니다. 나는 10 번 그렸다. 고맙습니다. – Defuzer

+0

답변을 수락하는 데 6 분. – Defuzer