Android怪异动作“程序”

时间:2012-09-04 14:22:00

标签: android

程序绘制两个数字和符号。 IF语句检查是否已绘制+ / - 。如果它绘制+添加,如果 - 是减法。

画作。

然后向用户提供任务的结果。这就是问题所在。

如果您给出“结果”中的结果。如果有的话就起作用。如果您输入的答案不正确,则显示Toast:再试一次。

问题在于,有时候会给出一个好的结果。再次尝试。

如何消除这个问题?可能会有不同的检查吗?

代码:

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

    }
}

1 个答案:

答案 0 :(得分: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);
    }