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;
}
代码如下:
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;
}