【发布时间】:2019-08-17 13:15:53
【问题描述】:
我必须检查任何数字的序列是否相等。用户将提交一个序列,如果数字按顺序重复,他就赢得了一些积分。
而赢得积分的顺序是三个。例如: 1 3 4 4 4 5 他赢了分数,因为他输入了 3 个数字 4 的序列。
它在向量上的数字序列。向量的大小,也是用户给定的。
for (int i = 0; i < M.length; i++) {
if (M[i] == M[i + 1] && M[i + 1] == M[i+2]) {
if (L[i] == L[i + 1] && L[i + 1] == L[i + 2]) {
ValuePoint = 0;
} else {
PExtraM = i;
ValuePoint = 30;
}
Scanner sc1 = new Scanner(System.in);
R = sc1.nextInt();
int M[] = new int[R];
int L[] = new int[R];
for (int i = 0; i < M.length; i++) {
M[i] = sc1.nextInt();
}
for (int i = 0; i < L.length; i++) {
L[i] = sc1.nextInt();
}
//The problem It's here ************************************
for (int i = 0; i < M.length; i++) {
if (M[i] == M[i + 1] && M[i + 1] == M[i+2]) {
if (L[i] == L[i + 1] && L[i + 1] == L[i + 2]) {
ValuePoint = 0;
} else {
PExtraM = i;
ValuePoint = 30;
}
线程“main”中的异常 java.lang.ArrayIndexOutOfBoundsException: 5 在 maratona.Maratona2.main(Maratona2.java:37) Java 结果:1
【问题讨论】:
-
你知道变量“i”可以有的最大值是M.length - 1,因此你不能访问M[i + 1]和M[i + 2],因为这些索引是当 i = M.length - 1 时,在数组之外。
-
为什么要将输入分成 2 个数组?
标签: java arrays if-statement