/** * Clase Test. Mantiene información de los datos de un test * * @author Fco Gutiérrez MAQUINA: propia * @version 1.0 4/2/2001 */ public class Test { // Variables de clase static private int ValorPositivas; // Valor de una respuesta acertada static private int ValorNegativas; // Valor de una respuesta fallada // variables de instancia private int numModelos; // Número de modelos distintos private int numPreguntas; // Preguntas en cada modelo private String [] respCorrectas; // Respuestas por modelo // Por defecto se toman estos valores static { ValorPositivas = 3; ValorNegativas = -1; } /** * ValorPositivas. Modifica el valor de una pregunta acertada * * @param vp nuevo valor para las preguntas acertadas * @return */ public static void ValorPositivas(int vp) { ValorPositivas = vp; } /** * ValorNegativas. Modifica el valor de una pregunta fallada * * @param vn nuevo valor para las preguntas falladas * @return */ public static void ValorNegativas(int vn) { ValorNegativas = vn; } /** * Constructor para objetos de la clase Test * @param nMod Número de modelos que tendrá el test * @param nRpsMod Número de preguntas por modelo */ public Test(int nMod, int nPrgMod) { // initializa las variables de instancia numModelos = nMod; numPreguntas = nPrgMod; respCorrectas = new String[numModelos+1]; // No utilizamos la pos 0 } /** * respModelo - Indica la respuenta correcta a un modelo dado * * @param i Número de modelo * @param s Respuesta correcta * @return */ public void respModelo(int i,String rC) throws Exception { // escriba su código aquí if (rC.length() != numPreguntas) { throw (new Exception("respModelo: Longitud inválida en Modelo"+rC)); } else if ((i<=0)|| (i>numModelos)) { throw (new Exception("respModelo: Número de modelo no válido"+i)); } respCorrectas[i] = rC; } /** * corrigeModelo - Corrige un modelo dado * * @param i Número de modelo * @param rM Respuesta dada al modelo i * @return Puntuación obtenida */ public int corrigeModelo(int i,String rM) throws Exception { // escriba su código aquí if (rM.length() != numPreguntas) { throw (new Exception("corrigeModelo: Longitud inválida en Modelo"+rM)); } else if ((i<=0)||(i>numModelos)) { throw (new Exception("corrigeModelo: Número de modelo no válido"+i)); } int a=0,b=0,f=0; // aciertos, en blanco, fallos for (int x=0;x<numPreguntas;x++) { char c = rM.charAt(x); char r = respCorrectas[i].charAt(x); if (c == ' ') { b++; } else if (c==r) { a++; } else { f++; } } return a*ValorPositivas+f*ValorNegativas; } /** * numModelos Devuelve el número de modelos * * @return el número de modelos */ public int numModelos() { return numModelos; } /** * numPreguntas Devuelve el número de preguntas por modelo * * @return El número de preguntas por modelo */ public int numPreguntas() { return numPreguntas; } }