如果在数组方法中没有输入,如何返回值?

时间:2017-04-28 07:15:53

标签: java arrays

所以,我必须编写一个程序来计算数组中重复次数最多的数字(例如1,2,2,3,3,3),然后告诉用户它是什么数字(3)。最后,在线编译器测试我的代码,看看我的输出是否正确。

Here are the inputs from the program. 我的问题是最后一个输入,没什么。我试图返回一个值,但我不能。

这是我的代码,不包括main方法(Java):

编辑:谢谢大家。我是个白痴。

public int lengthOfLongestRun(int[] values) {

    if (values == null){
        return 0;
    }

    int lastVal = values[0];
    int currentLength = 1;
    int longestLength = 1;

    for (int i = 1; i < values.length; i++) {
        if (values[i] == lastVal)
            currentLength++;
        else
            currentLength = 1;

        lastVal = values[i];

        if (currentLength > longestLength)
            longestLength = currentLength;
    }
    return longestLength;
}

4 个答案:

答案 0 :(得分:0)

如果输入数组为[],则其长度为零。所以请检查一下:

if (values.length == 0) {
  return 0;
}

请注意,最好不要在null的情况下返回0:它是无效的输入,所以不要给出有效的输出。例如,抛出NullPointerExceptionIllegalArgumentException

您也可以编写循环,以便不需要单独处理零例:

int longestLength = 0;
int i = 0;
while (i < values.length) {
  int start = i++;
  while (i < values.length && values[i] == values[start]) {
    ++i;
  }
  longestLength = Math.max(longestLength, i - start);
}
return longestLength;

答案 1 :(得分:0)

由于数组为空,您需要检查长度,如果数组的长度为零,则返回零。

现在你已经添加了一个用于空检查的条件。只需扩展它并为空数组添加另一个条件。

public int lengthOfLongestRun(int[] values)
   {

if(values == null || values.length == 0){ // code added here
  return 0;
}


int...
...

那应该可以解决你的问题。

我可以在这看到另一个潜在的错误。你的循环从位置1

开始
for (int i = 1; i < values.length; i++)
  {

如果最大数字位于1位置怎么办?您没有看到该错误,因为所有输入数组都以值1开头。

答案 2 :(得分:0)

你应该检查数组大小

if(values == null || array.length == 0){
  return 0;
}

答案 3 :(得分:0)

if(values == null || values.length == 0){
  return 0;
}