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