Java 为什么我的阵列不能按预期工作?
由于代码中的最后一个差异,我无法提交作业。我花了几个小时试图解决这个问题 我的代码选取20个测试答案,这些答案可以是“A”、“B”、“C”或“D”,然后告诉您是通过了(>=15个正确答案)还是失败了,有多少是对的,有多少是错的。之后,它会告诉你那些你弄错的问题编号 但是,只有前几个数字实际记录到我使用的数组中,而最后5个数字没有记录到(不管有多少错误,它总是最后5个数字)。奇怪的是,我使用Java 为什么我的阵列不能按预期工作?,java,arrays,for-loop,Java,Arrays,For Loop,由于代码中的最后一个差异,我无法提交作业。我花了几个小时试图解决这个问题 我的代码选取20个测试答案,这些答案可以是“A”、“B”、“C”或“D”,然后告诉您是通过了(>=15个正确答案)还是失败了,有多少是对的,有多少是错的。之后,它会告诉你那些你弄错的问题编号 但是,只有前几个数字实际记录到我使用的数组中,而最后5个数字没有记录到(不管有多少错误,它总是最后5个数字)。奇怪的是,我使用for循环将值读入数组,所以不应该存在差异。如果有,它很可能会给我一个数组索引outofboundsepti
for
循环将值读入数组,所以不应该存在差异。如果有,它很可能会给我一个数组索引outofboundseption
这是代码,有一个问题方法的注释(从第81行开始):
import java.util.Scanner;
公共类ch7{
私有静态字符[]更正={
‘B’、‘D’、‘A’、‘A’、‘C’、‘A’、‘B’、‘A’,
‘C’、‘D’、‘B’、‘C’、‘D’、‘A’、‘D’、‘C’,
‘C’、‘B’、‘D’、‘A’};
公共静态void main(字符串[]args){
扫描仪kb=新扫描仪(System.in);
布尔传递;
char[]answers=新字符[20];
对于(int x=0;x不正确?真:假;
}
公共静态整数totalCorrect(char[]ans){
int correct=0;
对于(int x=0;x
有一个简单的错误……你可以自己找出为什么会这样
提示:检查for循环中的条件
public static int[] questionsMissed(char[] ans) {
int nMissed = totalIncorrect(ans);
int[] missedQuestions = new int[nMissed];
int i = 0;
for(int x = 0; x <ans.length; x++) {
if(ans[x] != correctAns[x]) {
missedQuestions[i] = x + 1;
i++;
}
}
return missedQuestions;
}
publicstaticint[]问题已处理(char[]ans){
int nMissed=总不正确(ans);
int[]missedQuestions=新int[nMissed];
int i=0;
对于(int x=0;x您没有在调试器下一步一步地运行代码的原因是什么?为什么循环基于TotalError
?您为什么只是在第81行粘贴一个错误的完整代码?@GalAbra我认为完整的代码对于理解该方法的功能是必要的。我本可以发布ju测试该方法,但您不知道该方法做了什么或它调用了什么其他方法。如果您不知道如何使用调试器,请在someVariable
的可疑行为之后添加System.out.println(//someVariable//)
。。。
public static int[] questionsMissed(char[] ans) {
int nMissed = totalIncorrect(ans);
int[] missedQuestions = new int[nMissed];
int i = 0;
for(int x = 0; x <ans.length; x++) {
if(ans[x] != correctAns[x]) {
missedQuestions[i] = x + 1;
i++;
}
}
return missedQuestions;
}