java比较两个字符串不起作用
我是安卓 studio的初学者。我正在开发一个测验应用程序。应用程序应该检查要比较的两个字符串,并给出正确答案。但是比较两个字符串(即使它们相同)并不能给出正确的输出。相反,它直接进入代码中的最终返回语句。代码如下:
// ...
EditText Answer1 = (EditText) findViewById(R.id.answer1);
String ans = Answer1.getText().toString();
Log.v("MainActivity", "City name :" + ans);
String answer= String.valueOf(Answer1);
// ...
public String YourAnswers(String ans, boolean isDT, boolean isHC, boolean isBO,String answer) {
String Message = "1.:You answered \n"+ans+ "\n" +ques1(answer);
Message = Message + " \n 2.: \n" +question2(isDT,isHC,isBO) ;
return Message;
}
public String ques1(String answer) {
if (answer == "Jefferson City"){//||ans=="Jeff City"||ans=="Jeffcity"||ans=="Jeffersoncity"){
return "correct";
}
else if(answer =="Jeff City") {
return "correct.";
}
else if(answer =="Jeffcity"){
return "correct..";
}
else if(answer.equals("Jeffersoncity")){
return "correct.....";
}
return "Sorry,but the correct ans is Jefferson City";
}
当它进入ques1()
时,它直接进入最后一条语句,即return "Sorry,but the correct ans is Jefferson City";
。当我输入正确答案时,它也返回上述行
你知道为什么会这样吗
# 1 楼答案
在整个过程中使用
.equals()
而不是==
但是,请尝试此代码以允许使用toLowerCase()对
answer
进行任何大小写:# 2 楼答案
“==”不是比较java中字符串内容的正确方法
使用string1。等于(string2)
# 3 楼答案
使用。字符串上的equalsIgnoreCase(如果不区分大小写)。另外,为了避免nullpointer异常,请使用以下语法
“杰夫城”。等于(stringVar)
# 4 楼答案
背景
在Java中,有两种常用方法用于比较两个字符串。在您的示例中,您使用的不是其中一个,而是
==
这是一个equality operator-这些,您不能用于检查String
上的相等性您可以使用的第一个方法是^{} ,位于
String
上。这将检查String
所包含的所有字符是否完全相同,也就是说,它还将确保所给的String
与所比较的letter case相同下面是一个例子:
您可以使用的第二个方法是^{} ,也位于
String
上。如果比较的String
相同,则返回true
,但如果它们属于不同的情况,则不考虑,这不重要让我们重复前面的示例,看看会发生什么:
看看这一次这两个都是如何返回真的
解决方案
考虑到所有这些,我们可以继续修复您的代码:
那会有用的,太好了
而且
我把
{
放在新行上不会影响程序的结果。然而,关于为什么要将它们放在单独的行中,还有一些疑问。我之所以写这篇文章,是因为我非常喜欢再次提起辩论,让人们发疯