以下是代码:
import java.util.*;
public class HelloWorld
{
public static void main(String[] args)
{
String string1 = "randomString1";
System.out.print(f(string1));
}
public static int f(String string)
{
try {
String string2 = "randomString2";
if(string.equals(string2) == true);
return 0;
}
catch(Exception e){
e.printStackTrace();
}
return 1;
}
}//end of class
现在,该程序的输出是
0
但我希望它是:
1
因为我希望f
函数执行的操作是,如果字符串相同则返回0
,如果不是,则返回1
。
所以,我肯定在这里遇到了一些错误,我猜它与equals
方法有关。
答案 0 :(得分:4)
这就是问题:
if(string.equals(string2) == true);
----------------------------------^
你需要删除其他分号,它本身就是一种表达方式:
if(string.equals(string2) == true) return 0;
答案 1 :(得分:2)
== true
你有一个不属于的分号。
老实说,你甚至不需要if (string.equals(string2) == true);
//---------------------------------^
return 0;
部分。
答案 2 :(得分:1)
因为if:
结束时出现了分号return 0
所以当你在结尾处做一个分号时,如果意味着一个语句结束,则开始一个0
的新语句,你得到1
而不是if (string.equals(string2) == true){
//do nothing
}
//pass to the next statement
return 0;
< / p>
了解更多,你有什么意思:
if (string.equals(string2)){
return 0;
}
所以你可以使用:
{{1}}
答案 3 :(得分:1)
男人......
if(string.equals(string2) == true);
分号(;)这可以防止代码进入if块,因此
return 0;
行执行并返回0
程序运行正常。
解决问题的方法......
if(string.equals(string2))
return 0;
删除分号..代码可以正常工作。
答案 4 :(得分:1)
if语句末尾有一个不必要的semilocon。请尝试以下选项:
if(string.equals(string2)) {
return 0;
}
答案 5 :(得分:0)
简化。
public static int f(String string)
{
String string2 = "randomString2";
return (!TextUtils.isEmpty(string) && string.equals(string2)) ? 0 : 1;
}
不需要try-catch,因为TextUtils将为字符串处理null。