我一直试图为自己解决这个问题大约2个小时。我猜有人会立即发现我的问题。所以我的问题是while循环(或.equals给出了错误的结果)。这是代码:
Integer i = 0;
while(!type.equals(questionArray.get(i).questionType) && Questions.hasQuestionBeenUsed(i)) {
i++;
}
System.out.println(i + " type=" + type + " - questionType" + questionArray.get(i).questionType);
usedQuestionIndexes.add(i); //if question index has not been used - add it to used indexes
因此,当变量“type(string)”不等于“questionArray.get(i).questionType(string)”时,它的问题就出现了它不应该出现的问题。那么让我们说“type ='hello'”和“questionArray.get(i).questionType ='hi'”它是否会出现在循环中?
上面代码中代码的输出是:
1 type = general - questionType = sport
那么这里有什么问题?为什么说第一个条件是真的呢?第二个条件是假(这是正确的)继承人方法的代码“hasQuestionBeenAsked”:
public static Boolean hasQuestionBeenUsed(Integer questionIndex) {
for(Integer usedQuestionIndex : usedQuestionIndexes) {
if(questionIndex.equals(usedQuestionIndex)){
return true; //if index is found in usedQuestionIndexes array it will return that the index has been used
}
}
return false;
}
谢谢!如果您需要任何额外信息,请告诉我!
答案 0 :(得分:2)
这很简单 - 这是因为你通过使用否定运算符来否定错误 - (!)。所以,即使你有假,你最终也会得到真,因为(不是)假=真。在您的情况下,请使用
// Remove the negation - !
while(type.equals(questionArray.get(i).questionType) && Questions.hasQuestionBeenUsed(i)) {
i++;
}