我知道这是一个愚蠢的问题,但为什么这段代码不起作用。
boolean correct = "SampleText" == ((EditText)findViewById(R.id.editText1)).getText().toString();
if(correct) ((TextView)findViewById(R.id.textView1)).setText("correct!");
else ((TextView)findViewById(R.id.textView1)).setText("uncorrect!");
重点是检查“editText1”的内容是否等于“Sample Text”
答案 0 :(得分:26)
在Java中,必须使用equals()
而不是==
来比较两个字符串(通常是两个对象)。 ==
运算符测试 identity (意思是:测试两个对象在内存中是否完全相同),而方法equals()
测试两个对象 identity (意思是:测试两个对象是否具有相同的值),无论它们是两个不同的对象。你几乎总是对平等感兴趣,而不是对身份感兴趣。
要修复代码,请执行以下操作:
String str = ((EditText)findViewById(R.id.editText1)).getText().toString();
boolean correct = "SampleText".equals(str);
另请注意,在调用equals()
时首先放置字符串文字是一个好习惯,这样,如果第二个字符串为null
,您就会安全,避免可能NullPointerException
1}}。
答案 1 :(得分:1)
比较两个字符串的值(为了相等),你需要使用equals,而不是==(如果你不关心区分大小写,则使用equalsIgnoreCase)。
使用equals将检查字符串的内容/值(而不是“==”,它只检查两个变量是否指向同一个对象 - 不是相同的值)。
答案 2 :(得分:1)
在java中比较2个对象的正确方法是使用equals() method of Object class
由于String是java中的一个对象,因此应该以相同的方式进行比较。
比较字符串的正确方法是,
s1.equals(s2)
所以你可以使用它,
boolean correct = "SampleText"
的 .equals 强> (((EditText)findViewById(R.id.editText1)).getText().toString());
答案 3 :(得分:0)
在Java中Strings
必须与他们的equals()
方法进行比较:
String foo = "foo";
String bar = "bar";
if (foo.equals(bar)) System.out.println("correct");
else System.out.println("incorrect");
答案 4 :(得分:0)
((TextView)findViewById(R.id.textView1)).setText("SampleTest".equals(((EditText)findViewById(R.id.editText1)).getText().toString()) ? "correct!" : "incorrect!");
它有点长,而且可能是你能做到这一点的更好方法。 .toString()感觉很奇怪!