Código Javascript:
Ver original
Workbook w = Workbook.getWorkbook(new File ("Questions.xls")); Sheet s = w.getSheet(0); BufferedWriter bw = new BufferedWriter(new FileWriter("Reporte_Cuestionario.txt")); for (int itP=1; itP<=InPreg; itP++) { opcM = ""; int r=1; String choiceA = h3+s.getCell(r,itP).getContents()+_h3, choiceB = h3+s.getCell(r+1,itP).getContents()+_h3, choiceC = h3+s.getCell(r+2,itP).getContents()+_h3; Object[] choices = {choiceA, choiceB, choiceC}; opcChoice = JOptionPane.showOptionDialog(null, h1+itP+". "+s.getCell(0,itP).getContents()+_h1, " ", JOptionPane.YES_NO_CANCEL_OPTION, JOptionPane.QUESTION_MESSAGE, null, choices, choiceA); if (opcChoice == 0) { chD = "A"; } else if (opcChoice == 1) { chD = "B"; } else if (opcChoice == 2) { chD = "C"; } if (chD.equalsIgnoreCase("A")) { opcA_= 1; if ((s.getCell(s.getColumns()-1,itP).getContents()).equals("A")) { SpregC += "#"+itP+" "; CI = "CORRECTO"; ac_++; _ReportFinal(s,itP,opcA_,opcA_,CI); } else { SpregE += "#"+itP+" "; CI = "INCORRECTO"; er_++; _RespCorrect(s,itP,_R,opcA_,CI); } } else if ...//Y hay otros 2 IFS para B y C igual al de A //DESPUES..... private void _ReportFinal(Sheet s, int itP, int RespC, int RespABC, String CI) { _Foutput += itP+": "+s.getCell(0,itP).getContents()+ "\r\n Respuesta Correcta: "+s.getCell(s.getColumns()-1,itP).getContents()+ ") "+s.getCell(RespC,itP).getContents()+"\r\n Su Respuesta: "+opcP.toUpperCase()+ ") "+s.getCell(RespABC,itP).getContents()+"\r\n "+CI+"\r\n\r\n"; System.out.print("ENTRO A REPORTE"); }
Les comento:
Se ejecuta primero una ventana donde pide cuantas preguntas quiere en el cuestionario, después esta ventana:
Aqui elije una opcion donde cada boton tiene valor de 0, 1, 2 respectivamente, eso lo vemos en esta parte del código, y cuando presiona algun boton la variable String chD toma los valores de A, B ó C, eso esta en esta parte del código:
Código Javascript:
Ver original
Object[] choices = {choiceA, choiceB, choiceC}; opcChoice = JOptionPane.showOptionDialog(null, h1+itP+". "+s.getCell(0,itP).getContents()+_h1, " ", JOptionPane.YES_NO_CANCEL_OPTION, JOptionPane.QUESTION_MESSAGE, null, choices, choiceA); if (opcChoice == 0) { chD = "A"; } else if (opcChoice == 1) { chD = "B"; } else if (opcChoice == 2) { chD = "C"; }
Después de que se presiono y chD tomo un valor empiezan las comparaciones en el código que sigue después del bloque de arriba, entonces si Presiono la primer opcionn que esta en rojo, será un 0 y chD valdrá A, ahi entra al if y si ven cuando empieza a hacer las operaciones correspondientes, llama a la clase _ReportFinal(s,itP,opcA_,opcA_,CI); y se lleva los valores de Sheet, la iteracion del for, el valor de opcA al entrar al if y un String CI..
Código Javascript:
Ver original
if (chD.equalsIgnoreCase("A")) { opcA_= 1; if ((s.getCell(s.getColumns()-1,itP).getContents()).equals("A")) { SpregC += "#"+itP+" "; CI = "CORRECTO"; ac_++; _ReportFinal(s,itP,opcA_,opcA_,CI)
Entonces cuando entra a _ReportFinal y empieza con la primer instrucción, ahi esta el error segun el compilador.
Línea de error: _Foutput += itP+": "+s.getCell(0,itP).getContents()+
Error en el compilador: Exception in thread "main" java.lang.NullPointerException
at ExcelQuestionB._ReportFinal(ExcelQuestionB.java:16 7)
at ExcelQuestionB._Principal(ExcelQuestionB.java:109)
at ExcelQuestionB._InPreg(ExcelQuestionB.java:61)
at ExcelQuestionB.main(ExcelQuestionB.java:231)
No entiendo porque da ese error :S, ya le puse un try-catch y asi continua con la siguiente pregunta pero se salta esa parte donde da el error para generar el reporte final.
Saludos !!!