“线程中的异常”;“主要”;java.lang.ArrayIndexOutofBounds异常:7
我用JAVA编写了这段代码,每次尝试执行它时,都会出现运行时错误,如下所示: 线程“main”java.lang.ArrayIndexOutOfBoundsException中的异常:7 位于Solution.main(Solution.java:26) 我的实际代码如下所示:“线程中的异常”;“主要”;java.lang.ArrayIndexOutofBounds异常:7,java,Java,我用JAVA编写了这段代码,每次尝试执行它时,都会出现运行时错误,如下所示: 线程“main”java.lang.ArrayIndexOutOfBoundsException中的异常:7 位于Solution.main(Solution.java:26) 我的实际代码如下所示: import java.util.Scanner; public class Main { public static void main (String[] args){ Scanner s
import java.util.Scanner;
public class Main {
public static void main (String[] args){
Scanner scan = new Scanner(System.in);
int n = scan.nextInt();
int scores[]=new int[n];
for(int i=0;i<n;i++){
scores[i]=scan.nextInt();
}
int m = scan.nextInt();
int alice[]=new int[m];
for(int j=0;j<m;j++){
alice[j]=scan.nextInt();
}
int ranks1[]=new int [n];
ranks1[0]=1;
for(int k=1;k<(n+1);k++){
if((scores[k])<(scores[k-1])){
ranks1[k]=ranks1[k-1]+1;
}
else if((scores[k])==(scores[k-1]))
ranks1[k]=ranks1[k-1];
}
int rank2[] = new int[m];
for(int a=0,s=(n-1);(a<m) && (s>=0); ){
if(alice[a]<scores[s]){
rank2[a]=ranks1[s]+1;
a++;
}
if(alice[a]==scores[s]){
rank2[a]=ranks1[s];
a++;
s--;
}
if(alice[a]>scores[s]){
s--;
}
}
for(int l=0;l<m;l++){
System.out.println(rank2[l]);
}
}
}
import java.util.Scanner;
公共班机{
公共静态void main(字符串[]args){
扫描仪扫描=新扫描仪(System.in);
int n=scan.nextInt();
整数分数[]=新整数[n];
对于(int i=0;i是),您正在尝试访问非法索引。第一次这样做是在这里:
for(int k=1;k<(n+1);k++){
if((scores[k])<(scores[k-1])){
//
for(int k=1;k数组从0开始。这意味着在每个for
循环中,迭代器从1
开始,并访问索引k
中的数组(k是数组的大小)实际上,您正在尝试访问数组末尾之后的索引,这给了您一个ArrayIndexOutOfBoundsException
您正在尝试访问数组长度之外的索引
这发生在这个代码片段中
int ranks1[] = new int[n];
ranks1[0] = 1;
for (int k = 1 ; k < (n + 1) ; k++) {
if ((scores[k]) < (scores[k - 1])) {
ranks1[k] = ranks1[k - 1] + 1;
} else if ((scores[k]) == (scores[k - 1]))
ranks1[k] = ranks1[k - 1];
}
int ranks1[]=新的int[n];
ranks1[0]=1;
对于(int k=1;k<(n+1);k++){
如果((分数[k])<(分数[k-1])){
ranks1[k]=ranks1[k-1]+1;
}如果((分数[k])==(分数[k-1]),则为else
ranks1[k]=ranks1[k-1];
}
解决这个问题的最好方法是调试它
这对你来说是一个很好的练习。请勾选这个你在第26行错了。第26行是哪一行?程序应该怎么做?