gpt4 book ai didi

java - 在Java中查找2个数组中匹配元素的数量

转载 作者:行者123 更新时间:2023-12-01 19:51:11 25 4
gpt4 key购买 nike

我目前正在做一个课本上的练习(不是作业,自学),给出了多项选择考试的正确答案,我将其命名为answerKey,要求用户输入学生的答案,然后找到用于计算等级的匹配元素。请看看我到目前为止做了什么。我不明白的是 numCount 的行为,以及为什么它不能正确返回。我想要这方面的指导。谢谢!

import java.util.Arrays;
import java.util.Scanner;

public class Drivers_License
{
public static void main(String[] args)
{
Scanner scan = new Scanner(System.in);

int incorrect = 0;
double grade = 0.0;
String input;
char[] answerKey = {'B', 'D', 'A', 'A', 'C',
'A', 'B', 'A', 'C', 'D',
'B', 'C', 'D', 'A', 'D',
'C', 'C', 'B', 'D', 'A'};
System.out.println();

int numCorrect = 0;
int total = 0;
char[] responses = new char[20];
for (int i = 0; i < responses.length; i++) {
System.out.printf("Enter answer for # %d: ", i+1);
responses[i] = scan.nextLine().toUpperCase().trim().charAt(0);
for (int j = 0; j < answerKey.length; j++) {
if (responses[i] == (answerKey[j])) {
System.out.println(responses[i]);
numCorrect++; // I don't quite understand
// what is happening here...
}
}
}

/* Display elements in userAnswers array */
System.out.println("User answers are below");
for (int i = 0; i < responses.length; i++) {
System.out.print(responses[i] + " ");
}
System.out.println();
}


$ java Drivers_License

Enter answer for # 1: a
Enter answer for # 2: b
Enter answer for # 3: c
Enter answer for # 4: d
Enter answer for # 5: a
Enter answer for # 6: b
Enter answer for # 7: c
Enter answer for # 8: d
Enter answer for # 9: a
Enter answer for # 10: b
Enter answer for # 11: c
Enter answer for # 12: d
Enter answer for # 13: a
Enter answer for # 14: b
Enter answer for # 15: c
Enter answer for # 16: d
Enter answer for # 17: a
Enter answer for # 18: b
Enter answer for # 19: c
Enter answer for # 20: d
No. of correct answers: 100
User answers are below
A B C D A B C D A B C D A B C D A B C D

最佳答案

您正在使用两个 for 循环(一个在另一个循环内)。这些是嵌套的 for 循环。上面代码中发生的情况是,对于第一个数组中的每个索引 i,都会访问第二个数组中的所有 j。

您想要做的是只有一个 for 循环(20 次迭代)并并行访问两个数组中的元素。

    public class Drivers_License
{
public static void main(String[] args)
{
Scanner scan = new Scanner(System.in);

int incorrect = 0;
double grade = 0.0;
String input;
char[] answerKey = {'B', 'D', 'A', 'A', 'C',
'A', 'B', 'A', 'C', 'D',
'B', 'C', 'D', 'A', 'D',
'C', 'C', 'B', 'D', 'A'};
System.out.println();

int total = 0;
char[] responses = new char[20];
for (int i = 0; i < responses.length; i++)
{
System.out.printf("Enter answer for # %d: ", i+1);
responses[i] = scan.nextLine().toUpperCase().trim().charAt(0);

}

int numCorrect = 0;
for (int i = 0; i < responses.length; i++) {
if (responses[i] == (answerKey[i])) { // Look here
System.out.println(responses[i]);
numCorrect++;
}
}

/* Display elements in userAnswers array */
System.out.println("User answers are below");
for (int i = 0; i < responses.length; i++) {
System.out.print(responses[i] + " ");
}
System.out.println();
}

关于java - 在Java中查找2个数组中匹配元素的数量,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/51295580/

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