gpt4 book ai didi

java - 缺少返回语句而不抛出新的 IllegalArgumentException

转载 作者:行者123 更新时间:2023-11-29 08:22:14 25 4
gpt4 key购买 nike

我正在查看 leetcode 两和代码,并对抛出新的 IllegalArgumentException 语句感到困惑。代码的目标是返回两个数字的索引,以便在给定整数数组的情况下将它们加起来达到特定目标。假设每个输入都有一个解决方案,并且您不能两次使用相同的元素。这是代码:

如果我在没有抛出 new IllegalArgumentException("No two sum solution") 的情况下运行这段代码,它会显示错误消息:

Line 10: error: missing return statement } ^

但是,如果我添加 throw new IllegalArgumentException("No two sum solution"),代码会顺利运行。

我的问题是,由于假定每个输入只有一个解决方案,为什么在这种情况下抛出新的 IllegalArgumentException 很重要。谢谢。

class Solution {
public int[] twoSum(int[] nums, int target) {
for (int i = 0; i < nums.length; i++) {
for (int j = i + 1; j < nums.length; j++) {
if (nums[i] + nums [j] == target) {
return new int[] {i, j};
}
}
}
throw new IllegalArgumentException("No two sum solution");
}
}

最佳答案

编译器无法知道您关于只有一种解决方案的假设。

关于语句可达性的规则实际上是非常基本的。特别是,因为存在外循环上的循环保护而不是值为 true 的常量表达式,编译器认为循环体可能永远不会执行。因此,您需要处理这种可能性。

因为该方法是非空的,所以您必须返回一个值或抛出异常。

关于java - 缺少返回语句而不抛出新的 IllegalArgumentException,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/56758462/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com