java - 如何用 ""分隔字符串并将它们存储到2个不同的数组中?

标签 java arrays string

我正在尝试解决竞争性编程练习集。我只是一个初学者,所以请耐心等待。

问题来了

您学校的历史老师需要帮助使用他设计的对/错测试进行评分 评分技术。每个正确答案得两分,每个错误答案得一分 扣分,没有答案得零分。 你的任务是帮助老师自动完成这项任务。 输入 文件中的第一个条目包含以下形式的测试答案: 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/

相关文章:

java - 删除多行空格

java - IE/Facebook 问题 : Why Facebook Like box not display in Internet Explorer 6 - IE8?

arrays - 如何在 Swift 中访问 `AnyHashable` 中的 `Any` 类型?

arrays - 对连接项和非连接项进行分组的 Ruby 数组计算

java - 需要帮助解决 Java 字符串问题

java - Java中搜索和连接功能的使用

java - 将快照版本名称附加到 JAR 文件中

c - 值得使用 mod 来替换循环索引的 if 语句

java - java中根据参数连接多个字符串

c# - Linq 拆分函数查询