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

代替

 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 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;
        //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 回答
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 回答