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