为了账号安全,请及时绑定邮箱和手机立即绑定

需要循环外返回语句的方法

需要循环外返回语句的方法

缥缈止盈 2021-04-14 12:19:49
我在这里的方法在Eclipse上遇到问题。我要求Country如果在名为catalog的数组中找到该对象,则返回一个对象,如果未找到,则返回null。我试图遍历目录并这样做。但是,java要求我在代码的for循环之外添加return语句。但是,当我在执行该方法时在for循环外添加return语句时,它将完全忽略for循环,而仅在for循环外返回该语句。public Country findCountry(String countryname) {    for (int i = 0; i < catalogue.length; i++) {        if (catalogue[i].getName() == countryname) {            return catalogue[i];        } else {            return null;        }    }}编辑:在循环之前添加了foundCountry变量,并在之后返回了它。添加一个中断,并使用.equals()比较字符串。获取一个NullPointerException。public Country findCountry(String countryname) {        Country foundCountry = null;        for (int i = 0; i < catalogue.length; i++) {            if (catalogue[i].getName().equals(countryname)) {                foundCountry = catalogue[i];                break;            }        }        return foundCountry;    }
查看完整描述

3 回答

?
UYOU

TA贡献1878条经验 获得超4个赞

具有流使用率的另一个版本(需要Java 8或更高版本),并且检查的版本catalogue不是null:


public Country findCountry(String countryName) {

    if (catalogue == null) {

        return null;

    }


    return Arrays.stream(catalogue)

        .filter(country -> country.getName().equals(countryName))

        .findAny()

        .orElse(null);

}


查看完整回答
反对 回复 2021-04-28
?
狐的传说

TA贡献1804条经验 获得超3个赞

您可以将返回值初始化为null,并且仅在循环中找到它时才进行设置:


    public Country findCountry(String countryname) {

        // initialize a Country with null

        Country foundCountry = null;

        // try to find it

        for (int i = 0; i < catalogue.length; i++) {

            if (catalogue[i].getName().equals(countryname)) {

                // set it if found

                foundCountry = catalogue[i];

            }

        }

        // if not found, this returns null

        return foundCountry;

    }


查看完整回答
反对 回复 2021-04-28
  • 3 回答
  • 0 关注
  • 249 浏览

添加回答

举报

0/150
提交
取消
意见反馈 帮助中心 APP下载
官方微信