所以,我必须编写一个程序来计算数组中重复次数最多的数字(例如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;
}
答案 0 :(得分:0)
如果输入数组为[]
,则其长度为零。所以请检查一下:
if (values.length == 0) {
return 0;
}
请注意,最好不要在null的情况下返回0:它是无效的输入,所以不要给出有效的输出。例如,抛出NullPointerException
或IllegalArgumentException
。
您也可以编写循环,以便不需要单独处理零例:
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;
}