0

EditText からの入力整数を比較するときに問題が発生しています。何が悪いのかわかりません。私を助けてください。これが以下のコードです。

    protected void onCreate(Bundle savedInstanceState) {
        // TODO Auto-generated method stub
        super.onCreate(savedInstanceState);
        setContentView(R.layout.problem2);
        textIn = (EditText) findViewById(R.id.probText);
        Button ans3 = (Button) findViewById(R.id.answer3);



        ans3.setOnClickListener(new View.OnClickListener() {

            public void onClick(View v) {
                // TODO Auto-generated method stub
                String probString = textIn.getText().toString();
                Integer probInt = Integer.parseInt(probString);
                Integer prob = 31;
                if (probInt.equals(prob)) {
                    Toast toast = Toast.makeText(answer3.this,"CORRECT!",Toast.LENGTH_SHORT);
                    toast.setGravity(Gravity.CENTER_VERTICAL, 0, 0);
                    toast.show();
                    startActivity(new Intent("com.sample.androidsample.ANSWER4")    );

                } else {
                    Toast toast = Toast.makeText(answer3.this,"Wrong answer! Try again.",Toast.LENGTH_SHORT);
                    toast.setGravity(Gravity.CENTER_VERTICAL, 0, 0);
                    toast.show();
                }
            }
        });
}
4

6 に答える 6

1

これを試して:

Integer probInt = Integer.parseInt(probString);
            Integer prob = 31;
            //changed from equals() to ==
            if (probInt == prob)) {
                Toast toast = Toast.makeText(answer3.this,"CORRECT!",Toast.LENGTH_SHORT);
                toast.setGravity(Gravity.CENTER_VERTICAL, 0, 0);
                toast.show();
                startActivity(new Intent("com.sample.androidsample.ANSWER4")    );

            } else {
                Toast toast = Toast.makeText(answer3.this,"Wrong answer! Try again.",Toast.LENGTH_SHORT);
                toast.setGravity(Gravity.CENTER_VERTICAL, 0, 0);
                toast.show();
            }

私が理解していることからequals、文字列用です。

于 2012-08-16T00:57:28.507 に答える
0

入力をサニタイズする例を次に示します。簡潔にするために例外処理は省略されています。

private Pattern patternNum = Pattern.compile("^(\\d{1,5})$", 
                               Pattern.CASE_INSENSITIVE | Pattern.UNICODE_CASE);

// Wrap it in a try/catch for PatternSyntaxException!
private boolean validateNum(String inputNum){
    return patternNum.matcher(inputNum);
}

次に、validateNumルーチンがtrueを返すと仮定します。つまり、少なくとも5桁の数字に一致すると仮定して、次のように言います。

if (validateNum(probString)){
   int probInt = Integer.parseInt(probString);
   if (probInt == prob){
      // Success
   }else{
      // Failure
   }
}else{
   // Whoops! Bad input caught!
}
于 2012-08-16T01:32:38.363 に答える
0

代わりにInteger probInt = Integer.parseInt(probString);使用できますInteger probInt = Integer.valueOf(probString);が、これが問題かどうかはわかりません。また、代わりにprobInt.equals(prob) を使用できますprobInt.equalIgnoreCase(prob)

于 2012-08-16T00:48:29.527 に答える
0

これは間違った線だと思います。

Integer prob = 31;

ここで Integer はクラスなので、以下のようにインスタンス化する必要があります。

Integer prob = new Integer(31);

または、単に使用できます

int prob =31;
于 2012-08-16T01:01:27.717 に答える
0

それ以外の

 Integer probInt = Integer.parseInt(probString);
 Integer prob = 31;
 if (probInt.equals(prob)) {
 } else {
 }

使用する

int probInt = (int) Integer.parseInt(probString);
int prob = 31;
if (probInt == prob) {
} else {
}
于 2012-08-16T01:18:08.033 に答える
0

このことを試してみてください、それはうまくいくでしょう

Integer probInt = Integer.parseInt(probString);
        Integer prob = 31;
        //changed from equals() to ==
        if (probInt.intValue() == prob.intValue()) {
            Toast toast = Toast.makeText(answer3.this,"CORRECT!",Toast.LENGTH_SHORT);
            toast.setGravity(Gravity.CENTER_VERTICAL, 0, 0);
            toast.show();
            startActivity(new Intent("com.sample.androidsample.ANSWER4")    );

        } else {
            Toast toast = Toast.makeText(answer3.this,"Wrong answer! Try again.",Toast.LENGTH_SHORT);
            toast.setGravity(Gravity.CENTER_VERTICAL, 0, 0);
            toast.show();
        }
于 2012-08-16T01:22:41.833 に答える