如果包含char的语句未执行

时间:2014-07-31 20:59:26

标签: java if-statement char

我试图创建一个测试"正确"的数量的程序。数组中每十个位置的答案。我发现条件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]++;
        }
    }
}

1 个答案:

答案 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]++;
        }
    }
}

如果有拼写错误,请原谅我 - 我实际上并没有这样做。