在 totalCorrect() 和 totalIncorrect() 方法中,我设置了一个 var 累加器来计算正确或错误的问题数。由于某种原因,它不会正确增加。程序说用户得到了 24 或 40 个正确和不正确的...为什么它不能正确递增?
import java.util.Arrays;
import java.util.List;
import java.util.Scanner;
public class driverExam {
public static void main(String[] args) {
Scanner in = new Scanner(System.in);
System.out.println("Driver's Test. Input your answers for the following
10 Q's. ");
System.out.println();
String[] testAnswers = {"B","D","A","A","C","A","B","A","C","D"};
int uT = testAnswers.length;
String[] userAnswers = new String[uT];
int i =0;
while(i<uT) {
System.out.print("Question #"+(i+1)+": ");
String userInput = in.nextLine();
userInput = userInput.toUpperCase();
if (userInput.equals("A")|| userInput.equals("B")||
userInput.equals("C")
|| userInput.equals("D")) {
userAnswers[i] = userInput;
i++;
}else {
System.out.println("Enter again: ");
}
}
System.out.println("Here are the results.");
int qRight = totalCorrect(userAnswers,testAnswers);
System.out.println("Total Correct: "+qRight);
int qWrong = totalIncorrect(userAnswers, testAnswers);
System.out.println("Total Incorrect: "+qWrong);
System.out.println(passed(qRight));
}
只有当数组发现 userAnswers 中的字符串与 testAnswers 中的字符串相同时,我才尝试增加 var "same",而后一种方法中的 var "wrong"相同。
/**
* @param user
* @param test
* @return
*/
public static int totalCorrect(String[] user,String[] test) {
int same=0;
for (int r = 0;r<=user.length-1;r++) {
for (int k =0;k<=test.length-1;k++) {
if(user[r].equals(test[k])) {
same++;
}
}
}
return same;
}
/**
* @param user
* @param test
* @return
*/
public static int totalIncorrect(String[] user,String[] test) {
int z=0;
int wrong = 0;
boolean isValid = true;
while (isValid && z<user.length) {
if (user[z]!=test[z]) {
isValid = false;
wrong ++;
z++;
}
}
return wrongQ;
}
/**
* @param numRight
* @return //returns whether student has passed or failed
*/
public static String passed(int numRight) {
int goldenNum = 8;
if (numRight >=goldenNum) {
return ("You passed.");
}else
return ("You have failed.");
}
/**
* @param user
* @param test
* @return
*/
public static int[] questionMissed(String[] user, String[] test) {
//return array which display which questions were missed
}
}
最佳答案
您正在检查每个用户的答案是否与任何测试答案匹配。您应该只将它与一个答案进行比较:
public static int totalCorrect(String[] user,String[] test) {
int same=0;
for (int r = 0;r<=user.length-1;r++) {
if(user[r].equals(test[r])) {
same++;
}
}
return same;
}
总错误答案应该只是所有答案与正确答案之间的差异,因此您不需要为此目的使用单独的方法。
int qWrong = userAnswers.length - qRight;
关于java - 比较数组 - 方法中的累加器不会递增,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/52848223/