gpt4 book ai didi

java - 给我一个数组越界错误,我不知道如何修复它

转载 作者:行者123 更新时间:2023-12-01 14:46:05 25 4
gpt4 key购买 nike

这是我的代码,除了看起来有一个错误之外,我几乎已经完成了所有工作:

import java.util.*;
import java.io.*;

public class Proj5 {
public static void main(String[] args)throws IOException{
Scanner s = new Scanner(System.in);
int [] quizKey = {1,1,2,2,1,1,3,2,4,1,3,5,4,1,2};
String [] userAnswers = new String[100];
String [] wid = new String[100];
int [][] userIndividualAnswers = new int[quizKey.length][userAnswers.length];
int [] numCorrect = new int[quizKey.length];
int max;
int min;

int lines=0;
readInText();
s = readInText();
while(s.hasNext()){
String line = s.nextLine();
String[] tokens = line.split(",");
wid[lines] = tokens[0];
userAnswers[lines] = tokens[1];
lines ++;

}// end while loop
Long[][] userAnswersInt = new Long[quizKey.length][lines];
numCorrect = gradeSingleQuiz(lines, quizKey, userAnswers, numCorrect, userAnswersInt);
double[] percentCorrect = new double[lines];
percentCorrect = percentCorrect(lines, numCorrect, quizKey);
char[] grades = new char[lines];
grades = grade(numCorrect, lines);

displayOutput(wid, lines, numCorrect, grades, percentCorrect);
}//end main

public static Scanner readInText()throws IOException{
Scanner inFile = new Scanner(new File("QuizScores.txt"));
return inFile;


}// end readInText

public static String[] userAnswers(String userAnswers[]){
return userAnswers;
}

public static int[] gradeSingleQuiz(int lines, int quizKey[], String userAnswers[], int numCorrect[], Long userAnswersInt[][]){
for (int j=0; j<lines; j++){
numCorrect[j]=0;
long[] ara = new long[userAnswers.length];
long[] abc = new long[userAnswers.length];
ara [j] = Long.parseLong(userAnswers[j]);
for(int p=0; p<ara.length; p++){
abc [p] = ara[j]%10;
userAnswersInt[p][j] = ara[j]/10;
}
for(int n=0; n<=quizKey.length; n++){

if(userAnswersInt[j][n]==(quizKey[n])){
numCorrect[j]++;
}
}
}//end for loop

return numCorrect;
}// end gradeSingleQuiz

public static int max(int max, int numCorrect[]){
max = numCorrect[0];
for(int r=1; r<numCorrect.length; r++){
if(numCorrect[r]>max){
max=numCorrect[r];
}
}
return max;
}

public static int min(int min, int numCorrect[]){
min = numCorrect[0];
for(int r=1; r<numCorrect.length; r++){
if(numCorrect[r]<min){
min=numCorrect[r];
}
}
return min;
}

public static char[] grade(int numCorrect[], int lines){
char[] grade = new char[lines];
for (int j=0; j<=lines; j++){

if(numCorrect[j]>=14)
grade[j]='A';
else if((numCorrect[j]>=12)&&(numCorrect[j]<14))
grade[j]='B';
else if((numCorrect[j]>=11)&&(numCorrect[j]<12))
grade[j]='C';
else if ((numCorrect[j]>=9)&&(numCorrect[j]<11))
grade[j]='D';
else
grade[j]='F';
}
return grade;
}//end grade


public static double[] percentCorrect(int lines, int numCorrect[], int quizKey[]){
double[] centCorrect = new double[100];
for (int j=0; j<=lines; j++){
centCorrect[j] = numCorrect[j]/quizKey.length;
}
return centCorrect;
}

public static void averageScore(int lines, double percentCorrect[]){
double add=0;
for(int d=0; d<=lines; d++){
add = percentCorrect[d] + add;
}//end for loop
System.out.println("Average: " + add + "%");
}// end averageScore

public static void displayOutput(String wid[], int lines, int numCorrect[], char grades[], double percentCorrect[]){
System.out.println("Student ID # Correct %Correct Grade");
for(int i=0; i<lines; i++){
System.out.println(wid[0] + " " + numCorrect[i] + " " +
(percentCorrect[i]) + " " + grades[i]);
}

}// end display output

}//end class

当我尝试编译它时,它给了我这个错误,我正在使用 eclipse:

Exception in thread "main" java.lang.ArrayIndexOutOfBoundsException: 15
at Proj5.gradeSingleQuiz(Proj5.java:55)
at Proj5.main(Proj5.java:27)

有问题的行

userAnswersInt[p][j] = ara[j]/10;

我自己似乎无法弄清楚,是否有一些我在这里没有看到的东西,或者我完全以错误的方式处理这个问题?

提前致谢

编辑:

txt 文件中的 txt 是:

4563123,112211324135412
2312311,222121324135211
2312345,112211324135421
5527687,212111313124412
7867567,111111111111111

最佳答案

在gradeSingleQuiz() 方法中,数组ara 被初始化为userAnswersArray 的大小,但是您从j=0 到j=lines-1 循环它。数组 userAnswersArray 的大小始终为 100,但 lines 的长度取决于控制台的输入。

关于java - 给我一个数组越界错误,我不知道如何修复它,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/15426431/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com