Java 使用三元语句而不是if时缺少return语句

Java 使用三元语句而不是if时缺少return语句,java,core,Java,Core,编译器写入此构造(方法)缺少返回语句 所以不 是的 public int lastIndexOf(final int element) { for (int i = super.size() - 1; i >= 0; i--) { return (element == this.get(i)) ? i : -1; } } 为什么??毕竟,在这两种情况下执行将如何退出循环和方法是很清楚的。在第二种情况下,循环体可能永远不会执行。第二个循环的结果与第一

编译器写入此构造(方法)缺少返回语句

所以不

是的

    public int lastIndexOf(final int element) {
    for (int i = super.size() - 1; i >= 0; i--) {
        return (element == this.get(i)) ? i : -1;
    }
}

为什么??毕竟,在这两种情况下执行将如何退出循环和方法是很清楚的。

在第二种情况下,循环体可能永远不会执行。第二个循环的结果与第一个不同,即使它运行。它将只迭代一次,并返回
-1
size()-1
,即
i
的初始值(也就是说,如果循环至少运行一次-如果
i
初始值为-1,它将根本不会运行)。@tgdavies我理解,thanks@Thomas,我理解,非常感谢
    public int lastIndexOf(final int element) {
    for (int i = super.size() - 1; i >= 0; i--) {
        return (element == this.get(i)) ? i : -1;
    }
}