Java:if 语句返回的样式问题?

标签 java loops if-statement for-loop return

假设我有一个方法,要求我循环遍历数据结构,然后返回存储在特定索引中的数字(如果它等于给定数字)。如果数据结构中的两个数字相等,则返回第一个数字。

public static int method(int value, List<Integer> list){
    for (Integer i: list){
        if (i == value){
            return i;
        }
    }
}

这是一个有问题的解决方案,因为该方法不一定返回。我想您可以创建一个变量来存储对等效值的引用并返回该值,这样编译器就不会发出有关缺少 return 语句的错误,但这将是毫无意义的代码。

有更好的方法吗?如果您返回一个对象,您会只返回 0 或返回 null 吗?

最佳答案

如果未找到该值是预期且正常的,则返回 -1 表示“未找到”,因为正常返回是数组索引。

但是,如果运行循环直至完成确实是异常和意外的,则抛出异常,不要返回魔法值。

 public static int method(int value, List<Integer> list){
    for (int j = 0; j < list.size(); j++) {
        Integer i = list.get(j);
        if (i == value){
            return j;
        }
    }
    throw new IllegalStateException("The method 'SomeClass.method' reach an invalid termination point");
}

关于Java:if 语句返回的样式问题?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/28640492/

相关文章:

swift - 任何实现 "if let"然后比较(例如字符串比较)的单行代码?

java - 将保持插入顺序且没有重复的集合

java - 随机数不断变化

java - 启动 Waves 节点 com 扩展 com.wavesplatform.dex.Matcher

java - 是否有任何表格可以从 MAC 地址识别设备品牌?

loops - 在循环迭代器变量上使用 goroutines

c - 数组中的整数索引递增

c# - C#中并行运行循环需要什么条件?

r - 使用ifelse在R中创建新变量,但收到错误消息意外的 '='

java - android java switch 语句中缺少或删除循环周期