Java中最长运行时间错误的长度

Java中最长运行时间错误的长度,java,Java,我需要编写一个返回数组中最长运行时间的程序。在给出空参数之前,程序运行正常。它会生成一个0,但会显示一个越界错误。我该如何解决这个问题 这是我目前的代码: public class Numbers{ /**Computes the length of the longest run (sequence of adjacent repeated values) in an array. @param values an array of integer values @return

我需要编写一个返回数组中最长运行时间的程序。在给出空参数之前,程序运行正常。它会生成一个0,但会显示一个越界错误。我该如何解决这个问题

这是我目前的代码:

public class Numbers{
 /**Computes the length of the longest run (sequence of 
  adjacent repeated values) in an array.
  @param values an array of integer values
  @return the length of the longest run in values
   */
public int lengthOfLongestRun(int[] values){
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;

   }
}
公共类编号{
/**计算最长运行的长度(顺序)
数组中相邻的重复值)。
@参数值整数值数组
@返回最长行程的长度值
*/
公共int lengthOfLongestRun(int[]值){
int lastVal=值[0];
int currentLength=1;
int longestLength=1;
对于(int i=1;i最长长度)
{longestLength=currentLength;}
}
返回最长长度;
}
}
错误:
java.lang.ArrayIndexOutOfBoundsException

代码的第一行:

int lastVal = values[0];
假设数组中至少有一个值

因此,增加一条防线:

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

代码的第一行:

int lastVal = values[0];
假设数组中至少有一个值

因此,增加一条防线:

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

代码的第一行:

int lastVal = values[0];
假设数组中至少有一个值

因此,增加一条防线:

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

代码的第一行:

int lastVal = values[0];
假设数组中至少有一个值

因此,增加一条防线:

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

当数组为空时,此行将产生异常:

int lastVal = values[0];
在执行任何其他操作之前,您需要添加检查以查看数组是否为非空:

public int lengthOfLongestRun(int[] values) {
    if (values == null || values.length == 0) {
        return 0;
    }
    // The rest of your method goes here
    ...
}
通常,最好在方法顶部以参数检查的形式说明方法对其参数内容的假设。例如,如果您知道方法在传递
null
或空集合时无法工作,请在顶部添加一个检查以立即返回或引发异常(视情况而定)

注意:您应该修复代码中的
else
,包括重置长度和最后一个值,如下所示:

...
else {
    currentLength = 1;
    lastVal = values[i];
}

当数组为空时,此行将产生异常:

int lastVal = values[0];
在执行任何其他操作之前,您需要添加检查以查看数组是否为非空:

public int lengthOfLongestRun(int[] values) {
    if (values == null || values.length == 0) {
        return 0;
    }
    // The rest of your method goes here
    ...
}
通常,最好在方法顶部以参数检查的形式说明方法对其参数内容的假设。例如,如果您知道方法在传递
null
或空集合时无法工作,请在顶部添加一个检查以立即返回或引发异常(视情况而定)

注意:您应该修复代码中的
else
,包括重置长度和最后一个值,如下所示:

...
else {
    currentLength = 1;
    lastVal = values[i];
}

当数组为空时,此行将产生异常:

int lastVal = values[0];
在执行任何其他操作之前,您需要添加检查以查看数组是否为非空:

public int lengthOfLongestRun(int[] values) {
    if (values == null || values.length == 0) {
        return 0;
    }
    // The rest of your method goes here
    ...
}
通常,最好在方法顶部以参数检查的形式说明方法对其参数内容的假设。例如,如果您知道方法在传递
null
或空集合时无法工作,请在顶部添加一个检查以立即返回或引发异常(视情况而定)

注意:您应该修复代码中的
else
,包括重置长度和最后一个值,如下所示:

...
else {
    currentLength = 1;
    lastVal = values[i];
}

当数组为空时,此行将产生异常:

int lastVal = values[0];
在执行任何其他操作之前,您需要添加检查以查看数组是否为非空:

public int lengthOfLongestRun(int[] values) {
    if (values == null || values.length == 0) {
        return 0;
    }
    // The rest of your method goes here
    ...
}
通常,最好在方法顶部以参数检查的形式说明方法对其参数内容的假设。例如,如果您知道方法在传递
null
或空集合时无法工作,请在顶部添加一个检查以立即返回或引发异常(视情况而定)

注意:您应该修复代码中的
else
,包括重置长度和最后一个值,如下所示:

...
else {
    currentLength = 1;
    lastVal = values[i];
}

您的错误在这一行:

lastVal = values[i];

i的初始值为1,当给定空参数时,值为空数组。

您的错误在这一行:

lastVal = values[i];

i的初始值为1,当给定空参数时,值为空数组。

您的错误在这一行:

lastVal = values[i];

i的初始值为1,当给定空参数时,值为空数组。

您的错误在这一行:

lastVal = values[i];

i的初始值为1,当给定空参数时,值为空数组。

获取数组中数字的最大序列:

public int maxSequence(int[] A, int number) {

    int counter = 0, maxCounter = 0;

    for (int i = 0; i < A.length; i++)

        if (A[i] == number)
            maxCounter = ++counter > maxCounter ? counter : maxCounter;
        else
            counter = 0;

    return maxCounter;
}
public int-maxSequence(int[]A,int-number){
int计数器=0,maxCounter=0;
for(int i=0;imaxCounter?计数器:maxCounter;
其他的
计数器=0;
返回最大计数器;
}

获取数组中数字的最大序列:

public int maxSequence(int[] A, int number) {

    int counter = 0, maxCounter = 0;

    for (int i = 0; i < A.length; i++)

        if (A[i] == number)
            maxCounter = ++counter > maxCounter ? counter : maxCounter;
        else
            counter = 0;

    return maxCounter;
}
public int-maxSequence(int[]A,int-number){
int计数器=0,maxCounter=0;
for(int i=0;imaxCounter?计数器:maxCounter;
其他的
计数器=0;
返回最大计数器;
}

获取数组中数字的最大序列:

public int maxSequence(int[] A, int number) {

    int counter = 0, maxCounter = 0;

    for (int i = 0; i < A.length; i++)

        if (A[i] == number)
            maxCounter = ++counter > maxCounter ? counter : maxCounter;
        else
            counter = 0;

    return maxCounter;
}
public int-maxSequence(int[]A,int-number){
int计数器=0,maxCounter=0;
for(int i=0;imaxCounter?计数器:maxCounter;
其他的
计数器=0;
返回最大计数器;
}

获取数组中数字的最大序列:

public int maxSequence(int[] A, int number) {

    int counter = 0, maxCounter = 0;

    for (int i = 0; i < A.length; i++)

        if (A[i] == number)
            maxCounter = ++counter > maxCounter ? counter : maxCounter;
        else
            counter = 0;

    return maxCounter;
}
public int-maxSequence(int[]A,int-number){
int计数器=0,maxCounter=0;
for(int i=0;i