Java - 功能不符合我的预期 return

Java - Function does not return what I expected

代码如下:

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 函数执行的操作是 return 0 如果字符串相同,如果不相同则 1

所以,这里肯定有我知道的错误,我猜它与 equals 方法有关。

if(string.equals(string2) == true); 你那里有一个不属于的分号。 老实说,你甚至不需要 == true 部分。

因为 if 末尾的分号 :

if (string.equals(string2) == true);
//---------------------------------^
return 0;

所以当你在 if 的末尾加上分号意味着一个语句结束时开始一个新的语句 return 0 因为你得到 0 而不是 1

要了解更多,你这是什么意思:

if (string.equals(string2) == true){
   //do nothing
}
//pass to the next statement
return 0;

因此您可以使用:

if (string.equals(string2)){
   return 0;
}

这是问题所在:

if(string.equals(string2) == true);
----------------------------------^

你需要删除分号 else,它本身就是一个表达式,什么都不做:

if(string.equals(string2) == true) return 0;

男人...

if(string.equals(string2) == true);

分号 (;) 这会阻止代码进入 if 块,因此

return 0; 

行执行并且returns 0

该程序运行正常。

您的问题的解决方案...

if(string.equals(string2))
    return 0;

删除分号..代码可以正常工作。

简化。

public static int f(String string)
{
    String string2 = "randomString2";

    return (!TextUtils.isEmpty(string) && string.equals(string2)) ? 0 : 1;
}

不需要 try-catch,因为 TextUtils 会处理字符串的 null。

您的 if 语句末尾有一个不必要的分号。尝试以下选项:

if(string.equals(string2)) {
     return 0;
}