【发布时间】:2017-01-22 01:04:17
【问题描述】:
我正在尝试执行此操作,以便打印出相同数字的最长序列。我刚刚编辑了它,但它告诉我要放置一个 return statement 。这是我的代码:
public class A1Q3 {
private static int getLongestRun(int[] array){
int count = 1;
int max = 1;
for (int i = 1; i < array.length; i++) {
if (array[i] == array[i - 1]) {
count++;
} else {
count = 1;
}
if (count > max){
max = count;
}
}
public static void main(String[] args) {
int[] array = new int[]{5, 6, 6, 45, -2, -9, 56};
System.out.println(getLongestRun(array));
}
}
【问题讨论】:
-
"我对它不太自信" - 你不必这样:只需在几个示例上运行它,看看它是否有效(提示:它没有)。跨度>
-
当某个数字不是之前的数字时,您的计数将重置为 1。您需要将任意点的最长计数保存到另一个变量
currentMax和之后count++if(count>currentMax) currentMax=count;最后您将在 `currentMax`` 中获得最大值 -
有一个代码审查堆栈交换社区,您可以在其中发布此问题。
-
@VHS 不,他不能,你只能在那里查看 working 代码。上面的代码甚至没有编译。请在发布之前阅读 SO 网站的帮助中心(或向他人提供建议)
-
在下面更新了我的答案,包括如何让代码工作以及修复逻辑错误。