为什么我会收到"missing return statement"错误?



如果数组中的前 4 个元素之一是 9,则此方法应该返回 true。数组长度可能小于 4。在我的方法中,由于某种原因,我不断收到"缺少返回语句错误"。

public boolean arrayFront9(int[] nums) {
if (nums.length < 4) {
int counter = 0;
while (counter != nums.length) {
if (nums[counter] == 9) {
return true;
}else{
counter = counter + 1;
}
} if (counter > nums.length) {
return false;
}
}else{
int counter = 0;
while (counter <= 4) {
if (nums[counter] == 9) {
return true;
}else{
counter = counter + 1;
} if (counter > 4) {
return false;
}
}
}
}

'

我知道我必须确保无论什么代码都必须有一些返回值,但是给定 if 和 else 语句,数组的长度要么小于 4,要么大于或等于 4,所以无论呈现什么数组,它都应该输入这些条件之一?

试试这个

public boolean arrayFront9(int[] nums) {
boolean result = false;
if (nums.length < 4) {
int counter = 0;
while (counter != nums.length) {
if (nums[counter] == 9) {
result= true;
return result;
}else{
counter = counter + 1;
}
} 
if (counter > nums.length) {
result= false;
return result;
}
} else{
int counter = 0;
while (counter <= 4) {
if (nums[counter] == 9) {
result= true;
return result;
}
else{
counter = counter + 1;
} 
if (counter > 4) {
result= false;
return result;
}
}
}
return result;
}

实际上,您不是在方法中返回任何内容,而是在您的 if/else 中返回任何内容。

正如注释所说,您的代码路径之一不返回值。

这要简单得多。

public boolean containsNine()
{
int maxCount = array.length < 4 ? array.length : 4;
for (int i = 0; i < maxCount; i++)
{
if (array[i] == 9)
{
return true;
}
}
return false;   
}

相关内容

最新更新