>我创建了一个方法,给定一个数字数组和一个整数 n,它计算整数 n 出现的最长时间。例如1 0 0 0 1 1 1 1
,给定数字 1,最长序列是 4。我目前只是使用 0 和 1 来保持简单,但是我真的坚持实现我的主要方法来测试这个函数 - 我不确定从命令行读取时如何分隔整数"n"和整数数组,我希望我能得到一些指示/帮助。这是我的代码:
public class OneB {
public static int longestSeq(int[] nums, int n) {
int max = 0;
int curLength = 0;
for (int i = 0; i < nums.length; i++) {
if (i == n) {
curLength++;
if (curLength > max)
max = curLength;
} else
curLength = 0;
}
return max;
}
public static void main(String[] args) {
int[] nums = new int[args.length-2];
int n = Integer.parseInt(args[args.length-1]);
for (int i = 0; args.length-1 > i; i++) {
nums[i] = Integer.parseInt(args[i]);
}
int result = longestSeq(nums, n);
System.out.println(result);
}
}
我的目标是将命令行中的最后一个数字用作整数 n,而在此之前的所有数字都将用作数组 nums。
使用输入1 1 0 0 0 1 1 1 1 1
(最后 1 是我的"n"值 - 4 是预期输出),我得到错误:
Exception in thread "main" java.lang.ArrayIndexOutOfBoundsException: 8
at OneB.main(OneB.java:26)
检查 JavaDoc for ArrayOutOfBounds。 然后在代码中放置一个断点(您已经拥有确定哪一行所需的信息),并缓慢地单步执行代码,观察所有变量的值。