Java中最长运行时间错误的长度
我需要编写一个返回数组中最长运行时间的程序。在给出空参数之前,程序运行正常。它会生成一个0,但会显示一个越界错误。我该如何解决这个问题 这是我目前的代码: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
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