LeetCode两数之和Java实现变量报错及返回值异常问题咨询
问题解答
初始代码报变量找不到错误的原因
你定义的存储数组长度的变量名为lnght,但在双层for循环的终止条件中拼写为lngth,二者拼写不一致属于笔误,Java编译器无法找到对应名称的变量,因此抛出「cannot find symbol」错误。
必须补充循环外return语句的原因
- Java为静态强类型编译语言,编译阶段会严格校验方法的所有执行路径是否符合返回值声明要求。你声明的
twoSum方法返回值为int[]类型,仅在if条件命中的分支内写了return语句,当双层循环遍历完全部元素都未命中if条件时,代码会执行到循环外的区域,此时没有对应返回值,不符合Java语法规范,因此无法通过编译。 - 虽然LeetCode的Two Sum题目规则明确保证输入一定存在唯一解,不会出现遍历无结果的场景,但Java编译器不会感知业务题目的特殊规则,只会按照通用语法要求校验所有执行路径的合法性,因此必须补充循环外的返回语句。
内容的提问来源于stack exchange,提问作者Yuichi
相关产品推荐
相关产品推荐

