Java 布尔返回法
这是一个布尔方法,是我作业的一小部分。我想根据输入和记录之间是否存在匹配返回true或false。我想我遇到了语法问题Java 布尔返回法,java,methods,boolean,Java,Methods,Boolean,这是一个布尔方法,是我作业的一小部分。我想根据输入和记录之间是否存在匹配返回true或false。我想我遇到了语法问题 public boolean checkPhone(String[]param) { for(String s: param) { for(Residents r: petshop) { if(s.equals(r.getPhone())) { ret
public boolean checkPhone(String[]param) {
for(String s: param)
{
for(Residents r: petshop)
{
if(s.equals(r.getPhone()))
{
return true;
}
}
}
}
这是该方法的代码,但始终有红线指示我应该在代码中添加return,否则将该方法更改为void。但是我已经在if语句中添加了returntrue 正如前面的注释所述,您需要一个额外的
返回值
,因为具有非void返回类型的每个方法都要求每个可能的路径都有一个返回值
public boolean checkPhone(String[] param)
{
for (String s : param) {
for (Residents r : petshop) {
if (s.equals(r.getPhone())) {
return true;
}
}
}
return false;
}
使用变量将状态
true
存储在if循环中,然后在循环结束时返回该变量
请参阅以下一项:
public boolean checkPhone(String[] param) {
boolean state;
for (String s: param) {
for (Residents r: petshop) {
if (s.equals(r.getPhone())) {
state = true;
}
}
}
return state;
}
只需添加一个
返回false代码>在for循环之外,以便该方法在所有可能的条件下都有一个return语句。这意味着即使方法执行从未找到匹配项,该方法也应该能够返回布尔值,即false,这意味着它没有找到任何匹配项
public boolean checkPhone(String[] param)
{
for (String s : param) {
for (Residents r : petshop) {
if (s.equals(r.getPhone())) {
return true;
}
}
}
return false; // This is the fix
}
或者,您可以声明一个boolean retVal=false
,并在s.equals(r.getPhone())
的情况下将其设置为true,但始终返回此变量
public boolean checkPhone(String[] param) {
// declare the return value
boolean retVal = false;
for (String s : param) {
for (Residents r : petshop) {
if (s.equals(r.getPhone())) {
retVal = true;
}
}
}
return retVal;
}
与@maio290的解决方案不同的是,无论某个元素是否满足条件,循环始终完全运行。这可能会成为一个性能问题。这是因为如果您的if条件不成立,那么您将不会返回任何内容。
参考这个
public boolean checkPhone(String[] param) {
boolean isMatch = false;
for (String s: param) {
for (Residents r: petshop) {
if (s.equals(r.getPhone())) {
isMatch = true;
}
}
}
return isMatch ;
}
添加一个返回false循环后的代码>返回false代码>在末尾。如果没有匹配项,则没有指向return语句的代码路径。这就是编译器试图告诉您的。什么是petshop
?另外,正如其他人所说,如果param
或petshop
为空或不匹配,则需要返回一个值,因此在方法末尾添加return false
。请注意,这仍然不会编译,因为您忘记初始化状态
。这很慢,因为它每次都会检查每一对,与检查成功后立即返回相反,这是第三个提出这种方法版本的答案,但它比立即返回慢,因为它不是短路。