package org.c3sl.ufpr.br.correction;
import br.ufpr.c3sl.mistakes.MistakeOccurrence;
import br.ufpr.c3sl.virtualkeyboard.mathevaluator.MathEvaluator;
public class CorrectionFive extends AbstractCorrection {
public CorrectionFive() {
super(5);
}
private static final long serialVersionUID = 1L;
@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 = "";
switch (column) {
case 2:
if (row == 5)
expression = "ℓ/ (3 ^ n)";
else
expression = "ℓ/3^" + row;
break;
case 3:
if (row == 5)
expression = "( 4 ^ n ) * 3 * (ℓ/ 3 ^ n )";
else
expression = "(4^" + row + ")* 3 * (ℓ/3^" + row +")";
break;
default:
break;
}
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("5", 3, Integer.parseInt(row+""+column));
saveState(answer, expression, row, column);
return false;
case -2:
this.message = MistakeOccurrence.getMistakeMessage("5", 3, Integer.parseInt(row+""+column));
saveState(answer, expression, row, column);
return false;
default:
this.message = null;
return false;
}
}
}