public class Test
{
public Serializable callService(String _serverName)
{
boolean serverExist = false;
for (int i = 0; i < 5; i++) // 这个for循环没有特别的意义,只是模拟了一下我原本的业务场景
{
serverExist = _serverName.equals("123");
if (serverExist)
{
return "success";
}
}
if (!serverExist)
{
return "failed";
}
}
}现在的问题是编译的时候eclipse就报错,就是说这一段代码没有保证都return了。
如果我把第14行给注释掉,那就没问题,编译通过。我的问题是:
我的代码在逻辑上是没问题的。
如果serverName是123,那么在第8行将serverExist置为true,进入第9行的判断,return "success";
如果serverName不是123,那么for循环执行完毕,进入第14行的if判断,此时serverExist为false,!serverExist为true,进入if判断,return "failed"。请各位指教。
{
public Serializable callService(String _serverName)
{
boolean serverExist = false;
for (int i = 0; i < 5; i++) // 这个for循环没有特别的意义,只是模拟了一下我原本的业务场景
{
serverExist = _serverName.equals("123");
if (serverExist)
{
return "success";
}
}
if (!serverExist)
{
return "failed";
}
}
}现在的问题是编译的时候eclipse就报错,就是说这一段代码没有保证都return了。
如果我把第14行给注释掉,那就没问题,编译通过。我的问题是:
我的代码在逻辑上是没问题的。
如果serverName是123,那么在第8行将serverExist置为true,进入第9行的判断,return "success";
如果serverName不是123,那么for循环执行完毕,进入第14行的if判断,此时serverExist为false,!serverExist为true,进入if判断,return "failed"。请各位指教。
if包起来的程序,会被编译器认为是条件语句,编译器会认为这个方法可能有一种情况是没有返回的,所以就会报编译错误。别按照你的理解,有时候要考虑下机器的世界。1. if后面加一个else,也不会报错。
2. if删去这是两种方式,你可以试试。
{
public Serializable callService(String _serverName)
{
boolean serverExist = false;
for (int i = 0; i < 5; i++) // 这个for循环没有特别的意义,只是模拟了一下我原本的业务场景
{
serverExist = _serverName.equals("123");
if (serverExist)
{
return "success";
}
}
return "failed";
}
}
改成这样试下。