我试图创建一个测试"正确"的数量的程序。数组中每十个位置的答案。我发现条件textarray[i * 10 + k] == answerarray[k]
的if循环即使满足条件也不会执行(我已经验证了这一点)。
else if语句textarray[i * 10 + k] == ' '
正在起作用,所以我不明白前者为什么不这样做。任何帮助将不胜感激!
char[] textarray = new char[textfile.length()];
for (int i = 0; i < textfile.length(); i++) {
textarray[i] = textfile.charAt(i);
}
double[] eachquestiona = new double[10];
double[] eachquestionb = new double[10];
double[] eachquestionc = new double[10];
double[] eachquestiond = new double[10];
double[] eachquestione = new double[10];
//stores how many questions each student got correct, incorrect or left blank
int[] studentcorrect = new int[textfile.length() / 10];
int[] studentincorrect = new int[textfile.length() / 10];
int[] studentblank = new int[textfile.length() / 10];
for (int i = 0; i < textfile.length() / 10; i++) {
for (int k = 0; k < 10; k++) {
if (textarray[i * 10 + k] == 'A') {
eachquestiona[i]++;
}
if (textarray[i * 10 + k] == 'B') {
eachquestionb[i]++;
}
if (textarray[i * 10 + k] == 'C') {
eachquestionc[i]++;
}
if (textarray[i * 10 + k] == 'D') {
eachquestiond[i]++;
}
if (textarray[i * 10 + k] == 'E') {
eachquestione[i]++;
}
if (textarray[i * 10 + k] == answerarray[k]) {
studentcorrect[i]++;
}
else if (textarray[i * 10 + k] == ' ') {
studentblank[i]++;
}
else {
studentincorrect[i]++;
}
}
}
答案 0 :(得分:0)
好的,这有点乱,所以我会把你的SO代码的第一个传递给你:
首先,您需要解决Edd和Baldy指出的问题。我们还需要知道什么是“textfile”?没有数据类型,我不确定“charAt”或“length”是否按照您的预期进行评估。
另外,不确定这是否会导致您的问题,但您的索引已经搞砸了。你应该使用
eachquestiona [K] ++
不是
eachquestiona [I] ++
我还将A和“answerArray”之间的“if”语句更改为“else if”语句(它不应该超过一个),将空白支票移到它们之后,然后让你的“answerarray”在最后的其他错误之前检查最后(在它之前没有“else if”)。它不能同时是'A'和'B'和'',您的代码应该反映出来。它是正确的还是不正确的(理论上''可能是正确答案)。
编辑:
实际上我对这段代码做了很多改动,以使其更清晰(这可能会让错误突然出现),这是我对它的改造:
String textFile=//Initialize it here and show us how you did
final int NUMQUESTIONS = 10; //This may become a variable later
final int NUMSTUDENTS = textFile.length() / NUMQUESTIONS; //Probably should check that this is correct
double[] eachquestiona = new double[NUMQUESTIONS];
double[] eachquestionb = new double[NUMQUESTIONS];
double[] eachquestionc = new double[NUMQUESTIONS];
double[] eachquestiond = new double[NUMQUESTIONS];
double[] eachquestione = new double[NUMQUESTIONS];
//stores how many questions each student got correct, incorrect or left blank
int[] studentcorrect = new int[NUMSTUDENTS];
int[] studentincorrect = new int[NUMSTUDENTS];
int[] studentblank = new int[NUMSTUDENTS];
for (int studentCount = 0; studentCount < NUMSTUDENTS; studentCount++) {
for (int answerCount = 0; answerCount < NUMQUESTIONS; answerCount++) {
char thisAnswer=Character.toUpperCase(charAt(studentCount * NUMQUESTIONS + answerCount));
switch(thisAnswer) {
case 'A': eachquestiona[answerCount]++; break;
case 'B': eachquestionb[answerCount]++; break;
case 'C': eachquestionc[answerCount]++; break;
case 'D': eachquestiond[answerCount]++; break;
case 'E': eachquestione[answerCount]++; break;
case ' ': studentblank[studentCount]++; break;
}
if (thisAnswer == Character.toUpperCase(answerarray[answerCount])) {
studentcorrect[studentCount]++;
} else {
studentincorrect[studentCount]++;
}
}
}
如果有拼写错误,请原谅我 - 我实际上并没有这样做。