这可能是一个非常新手的问题,但如果不使用for循环,我找不到一个答案。我有一个数组设置为常量,其中包含测试的正确答案。该程序接收用户输入,然后将其与常量数组进行比较,并计算正确答案的数量。我不应该导入任何库,并且应该使用while循环来完成该方法。我想通过ANSWER常量迭代用户输入,并为所有正确答案创建一个计数。这是我的类的一个片段(为了简单起见,我排除了提示用户回答的方法(
public class DriverExam{
public static final char[] ANSWER = {'B','D','A','A','C','A','B','A','C','D','B','C','D','A','D','C','C','B','D','A',};
private char[] driversAnswers;
InputReader reader;
public DriverExam(){
reader = new InputReader();
driversAnswers = new char[20];
}
public int getTotalCorrectAnswers(){
int correct = 0;
int index = 0;
while (index < ANSWER.length){
index++;
if(driversAnswers.equals(ANSWER)){
correct++;
}
System.out.println(index);
System.out.println(correct);
}
return correct;
这个问题很可能与if语句有关,但我似乎找不到迭代数组索引并将其与另一个数组进行比较的方法。
编辑:我目前的方法如下:
public int getTotalCorrectAnswers(){
int correctAnswer = 0;
int index = 0;
while(index < ANSWER.length){
if(ANSWER[index]==driversAnswers[index]){
correctAnswer++;
index++;
}
// System.out.println(index);
System.out.println(correctAnswer);
}
return correctAnswer;
在几次尝试中,我得到了一些实际的计数,但似乎一旦遇到不同的值,它就会停止计数器。但就目前情况来看,我被0的的结果值卡住了
如注释中所述,您不能像这样比较数组。driverAnswers.equals(ANSWER)
只比较引用,在这种情况下会返回false,因为引用不同。如果要检查数组是否相等,可以使用Arrays.equals(arr1, arr2)
。在这种情况下,对数组中的每个元素调用equals
方法。如果数组中的对象正确地覆盖了此方法,则此方法将返回所需的结果。
但是,您没有提到不要使用其他库。最简单的解决方案是遍历每个元素并检查相等
编辑:因为你不需要其他情况,我在这里做了一些编辑
while(index < ANSWER.length){
if(driverAnswer[index] == ANSWER[index])
correct++
index++
}
首先,您要检查两个数组的大小必须相等,如果是这样,则可以直接使用Arrays。equals方法来获得所有正确答案,否则您可以循环获得正确答案,查看下面的简单迭代
int correctAnswer = 0;
if(ANSWER.length == driversAnswers.length){
if(Arrays.equals(ANSWER,driversAnswers))
System.out.println("correct answer: " + driversAnswers.length);
else{
for (int i=0;i<ANSWER.length;i++) {
if(ANSWER[i]==driversAnswers[i])
correctAnswer++;
}
System.out.println("correct answer: " + correctAnswer);
}
}
您可以在那里使用while循环,而不是用于
int correctAnswer = 0,index=0;
if(ANSWER.length == driversAnswers.length){
if(Arrays.equals(ANSWER,driversAnswers))
System.out.println("correct answer: " + driversAnswers.length);
else{
while (index<ANSWER.length) {
if(ANSWER[index]==driversAnswers[index])
correctAnswer++;
index++;
}
System.out.println("correct answer: " + correctAnswer);
}
}
使用此作为您的参考
import java.util.Arrays;
class Test{
public static void main(String[] args) {
char[] ANSWER = {'B','D','A','A','C','A','B','A','C','D','B','C','D','A','D','C','C','B','D','A',};
char[] driversAnswers = {'x','D','A','A','C','A','B','A','C','D','B','C','D','A','D','C','C','B','D','A',};
int correctAnswer = 0,index=0;
if(ANSWER.length == driversAnswers.length){
if(Arrays.equals(ANSWER,driversAnswers))
System.out.println("correct answer: " + driversAnswers.length);
else{
while (index<ANSWER.length) {
if(ANSWER[index]==driversAnswers[index])
correctAnswer++;
index++;
}
System.out.println("correct answer: " + correctAnswer);
}
}
}
}