package org.c3sl.ufpr.br.correction;
import br.ufpr.c3sl.mistakes.MistakeOccurrence;
import br.ufpr.c3sl.virtualkeyboard.mathevaluator.MathEvaluator;
public class CorrectionTwo extends AbstractCorrection {
public CorrectionTwo() {
super(2);
}
private static final long serialVersionUID = 8032322462671188618L;
@Override
public boolean isCorrect(String answer, int row, int column) {
MathEvaluator math = new MathEvaluator();
math.addVariable("ℓ", 311.43);
math.addVariable("n", 0.8);
math.setExpression(answer);
answerDouble = math.getValue();
String expression = "";
if (row == 5)
expression = "ℓ/ ( 2 ^ n )";
else
expression = "ℓ/2^" + row;
math.setExpression(expression);
correctAnswer = math.getValue();
int comparationReturn = super.compareDouble(correctAnswer, answerDouble, 0.009);
switch (comparationReturn) {
case 1:
this.message = null;
saveHit(answer, expression, row, column);
return true;
case -1:
this.message = MistakeOccurrence.getMistakeMessage("3", 3, row);
saveState(answer, expression, row, column);
return false;
case -2:
this.message = MistakeOccurrence.getMistakeMessage("3", 3, row);
saveState(answer, expression, row, column);
return false;
default:
this.message = null;
return false;
}
}
}