好的,我在本节中的程序从studentAnswer字符串数组中获取一行数据,其值将类似于TTFFTFTFTF
。我应该接受它,并将其与键数组进行比较,键数组可能看起来像TFFFTFTFTF
。一个学生参加测验,我的程序计算出正确的分数。
我的意图是使用单独的点数组来查找学生的数字成绩。 studentAnswer
的索引指的是特定学生。所以studentAnswer[i]
是TTFFTFTFTF
。我使用子字符串将每个T / F与key[]
中的正确答案进行比较,该答案在每个索引中只有一个T / F。然后,如果他们的答案正确,则在points[]
中的相关索引上加1,稍后再查找points[]
的总和以找出十分之几。
我的问题是,用来定义学生原始答案字符串的字符串origAns
遇到Java错误,找不到符号。我尝试将origAns
的实例化放置在每个不同的for循环中,但无法使程序正常工作。 Int i
的目的是跟随每个特定的学生-我有四个平行的数组,它们将记录该学生的ID号,数字等级,字母等级和原始答案。因此,i
的目的是通过每个学生。然后应使用j
遍历每个原始学生答案字符串并将其与正确答案进行比较...
从逻辑上讲,这对我来说应该放在哪里,但java不同意。请帮助我了解此错误!
for (int i = 0; i < studentAnswer.length; i++){
String origAns = studentAnswer[i];
for (int j = 0; j < key.length; j++){
if (origAns.substring[j] == key[j]){
//substring of index checked against same index of key
points[j] = 1;
}
if (origAns.substring[j] != key[j]){
points[j] = 0;
}
}
}
最佳答案
听起来您正在尝试调用substring
方法-但是您试图像访问一个字段一样对其进行访问。因此,第一个更改是:
if (origAns.substring(j) == key[j])
否则将比较字符串引用而不是内容,因此您可能需要:
if (origAns.substring(j).equals(key[j]))
实际上,我怀疑您想让
charAt
获得单个字符-substring
将在指定索引之后返回包含所有内容的字符串:if (origAns.charAt(j) == key[j])
...其中
key
在此处为char[]
。您也可以通过使用
else
子句来避免进行“相反”比较。为了可读性,您还应该更仔细地缩进代码。例如:
for (int i = 0; i < studentAnswer.length; i++) {
String origAns = studentAnswer[i];
for (int j = 0; j < key.length; j++) {
if (origAns.charAt(j) == key[j]) {
points[j] = 1;
} else {
points[j] = 0;
}
}
}
现在,您可以将其更改为使用条件表达式而不是if / else:
for (int i = 0; i < studentAnswer.length; i++) {
String origAns = studentAnswer[i];
for (int j = 0; j < key.length; j++) {
points[j] = origAns.charAt(j) == key[j] ? 1 : 0;
}
}