对于在满意的内部if语句上的loope中断

时间:2017-03-03 23:46:30

标签: java android loops

在项目中我有以下方法,它迭代了Genre枚举,也在下面给出。问题是当if语句满足某些值时,for循环中断并且该方法返回false。这段代码可能有什么问题?

感谢。

private boolean genreExists(Integer num) {
    Genre[] genres = Genre.values();
    for(Genre g : genres){
        if(num == g.getId()){
            return true;
        }
    }
    return false;
}

public enum Genre {
ACTION(28),
ADVENNTURE(12),
ANIMATION(16),
COMEDY(35),
CRIME(80),
DOCUMENTARY(99),
DRAMA(18),
FAMILY(10751),
FANTASY(14),
HISTORY(36),
HORROR(27),
MUSIC(10402),
MYSTERY(9648),
ROMANCE(10749),
SCIENCEFICTION(878),
TVMOVIE(10770),
THRILLER(53),
WAR(10752),
WESTERN(37);

private static final Map<Integer, Genre> map = new HashMap<>();

static{
    for(Genre g : values()){
        map.put(g.getId(), g);
    }
}

int id;

Genre(int id) {
    this.id = id;
}

public int getId() {
    return id;
}

public void setId(int id) {
    this.id = id;
}

public static Genre of(Integer id){
    Genre result = map.get(id);
    if(result == null){
        throw new IllegalArgumentException("Invalid id value: " + id);
    }
    return result;
}

}

1 个答案:

答案 0 :(得分:-1)

也许你应该做的是:

boolean cond = false;
for(Genre g : genres){
    if(num == g.getId()){
        cond = true;
        break;   
    }
}
return cond;

如果你仍然得到错误的返回,那么你的IF条件永远不会得到满足。