我正在尝试解决竞争性编程练习集。我只是一个初学者,所以请耐心等待。
问题来了
您学校的历史老师需要帮助使用他设计的对/错测试进行评分 评分技术。每个正确答案得两分,每个错误答案得一分 扣分,没有答案得零分。 你的任务是帮助老师自动完成这项任务。 输入 文件中的第一个条目包含以下形式的测试答案: TFFTFTFTFFFTTTTFTTFT
下一行是测试用例数,即参加测试的学生人数。 文件中的所有其他条目都是学生 ID,后跟空白,然后是学生的 ID 回应。例如,条目:
S2013-1-1003 TFTTFTTT TFTTFTFTTFT
表示学号为S2013-1-1003,问题1的答案为True,则 问题 2 的答案为 False,依此类推。该学生没有回答问题 9。考试,在 这个例子有 20 个问题。 输出 输出应该是学生的 ID,然后是答案,然后是测试分数, 其次是考试成绩。假设以下等级范围:90%-100%,A; 80%-89.99%,B; 70%-79.99%,C; 60%-69.99%,D; 0%-59.99%,F。
示例输入
TTTTTFFFFF
3
S2013-1-2345TTTTFFFFFF
S2013-1-1266 TFTTFTTFTF
S2012-2-0006 T T TF F F
示例输出
S2013-1-2345 TTTTTFFFFF 20 A
S2013-1-1266 TFTTFTTFTF 8F
S2012-2-0006 T T TF F F 12 D
*/
我的代码:
public class Score {
public static void main(String args[]){
Scanner sc = new Scanner(System.in);
//input answer to the test
String correctAnswer = sc.nextLine();
//input number of test cases
int numberOfStudents = sc.nextInt();
String studentID[] = new String[numberOfStudents];
String studentAnswer[] = new String[numberOfStudents];
int studentScore[] = new int[numberOfStudents];
char studentGrade[] = new char[numberOfStudents];
//ask user to input data
for(int i = 0; i < numberOfStudents; i++) {
System.out.println("Enter student details");
studentID[i] = sc.nextLine();
studentAnswer[i] = sc.nextLine();
}//end of first for loop
//checks whether the student has the correct score
for(int y = 0; y < correctAnswer.length(); y++) {
if(studentAnswer[y].charAt(y) == correctAnswer.charAt(y)) {
studentScore[y]++;
}//end of if
}//end of for
for(int y = 0; y < numberOfStudents; y ++) {
double percentage = (studentScore[y] / correctAnswer.length()) * 100 ;
//check the letter grade of the student
if(percentage >= 90) {
studentGrade[y] = 'A';
}//end of first if
else if(percentage >= 80 && percentage <= 89) {
studentGrade[y] = 'B';
}//end first else if
else if(percentage >= 70 && percentage <= 79) {
studentGrade[y] = 'C';
}//end of second else if
else if(percentage >= 60 && percentage <= 69) {
studentGrade[y] = 'D';
}//end of third else if
else {
studentGrade[y] = 'F';
}//end of last else
}//end of for
//close the scanner to avoid any memory leaks
//display the score
for(int i = 0; i < numberOfStudents; i++) {
System.out.printf("%d\t%d\t%d\t%d", studentID[i], studentAnswer[i], studentScore[i], studentGrade[i]);
}//end of first for
}//end of main
}//end of class
程序编译完毕,但是一旦我输入测试数据,我就收到了来自编译器的 outofBounders 错误。然后我意识到我在这段代码中犯了一个错误
System.out.println("Enter student details");
studentID[i] = sc.nextLine();
studentAnswer[i] = sc.nextLine();
}//end of first for loop
如果StudentID和studentAnswer是一个整数,那么我可以使用空格分隔它们并在一行中输入我的数据。但是我忘记了,当我使用空格作为分隔符时,它不会被分隔,因为空格仍然被视为字符串。我的主要问题是如何要求用户在一行中输入他的学生 ID 和答案,并用字符串分隔,以便我可以将其存储到我的数组中,例如 StudentID 数组和 StudentAnswer 数组。
最佳答案
您用于显示分数的格式说明符错误!您可以按如下方式更改它:
//显示分数
for(int i = 0; i < numberOfStudents; i++) {
System.out.printf("%s\t%s\t%d\t%s", studentID[i], studentAnswer[i], studentScore[i], studentGrade[i])
}//end of first for
关于java - 如何用 ""分隔字符串并将它们存储到2个不同的数组中?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/58819132/