所以我需要将我的字符串与用户在EditText中输入的字符串进行比较。 我输入相同的字符串,但Java认为这是两个不同的字符串。 我检查了空格,但没有找到它们。
private void checkEditTexts(){
...
String userAnswer = editTextAnswer.getText().toString().toLowerCase();
String rightAnswer = getResources().getString(R.string.question3_answer1).toLowerCase();
Log.v("checkET.userAnswer", "userAnswer = [" + userAnswer + "] rightAnswer = [" + rightAnswer + "]" );
if(userAnswer == rightAnswer) {
points++;
Log.v("checkEditTexts()", "POINTS++: " + points);
}else{
points--;
Log.v("checkEditTexts()", "POINTS--: " + points);
}
...
}
logcat的:
08-29 16:47:27.494 16583-16583/....V/checkET.userAnswer: userAnswer = [song 2] rightAnswer = [song 2]
08-29 16:47:27.494 16583-16583/... V/checkEditTexts(): POINTS--: 2
08-29 16:47:27.494 16583-16583/....V/checkEditTexts(): POINTS--: 1
08-29 16:47:27.494 16583-16583/....V/checkEditTexts(): POINTS: 1
你可以看到 userAnswer 和 rightAnswer 是相同的,它应该执行points++
,而是points--
抱歉英语不好。
答案 0 :(得分:2)
使用equels
或equalsIgnoreCase
。 ==
比较引用类型而不是值。但是equels
和equalsIgnoreCase
会检查值而不是引用。
if(userAnswer.equalsIgnoreCase(rightAnswer)) {
points++;
Log.v("checkEditTexts()", "POINTS++: " + points);
}else{
points--;
Log.v("checkEditTexts()", "POINTS--: " + points);
}
答案 1 :(得分:1)
在比较字符串时不应使用==。
if(userAnswer.equals(rightAnswer)){//因为你做了toLowerCase你可以使用equals而不是equalsIgnoreCase
答案 2 :(得分:1)
在if
语句中使用equals
方法进行字符串比较,因为在Java中,当==
运算符用于比较2个对象时,它会检查对象是否引用到记忆中的同一个地方。
像这样修改你的if
:
...
if(userAnswer.equals(rightAnswer)) {
points++;
Log.v("checkEditTexts()", "POINTS++: " + points);
}
...
答案 3 :(得分:0)
试试这个
if (userAnswer.equalsIgnoreCase (rightAnswer)) {
points++;
Log.v("checkEditTexts()", "POINTS++: " + points);
}else{
points--;
Log.v("checkEditTexts()", "POINTS--: " + points);
}