Java - 函数没有返回我的预期

时间:2017-04-13 12:31:59

标签: java string try-catch equals

以下是代码:

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方法有关。

6 个答案:

答案 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。