Foros del Web » Programación para mayores de 30 ;) » Java »

No entiendo porque da error NullPointerException :S

Estas en el tema de No entiendo porque da error NullPointerException :S en el foro de Java en Foros del Web. Buenas, tengo un problema que me parece muy facil pero no se porque no lo puedo reparar: @import url("http://static.forosdelweb.com/clientscript/vbulletin_css/geshi.css"); Código Javascript : Ver original Workbook ...
  #1 (permalink)  
Antiguo 30/11/2010, 00:10
 
Fecha de Ingreso: abril-2009
Mensajes: 5
Antigüedad: 15 años
Puntos: 1
Pregunta No entiendo porque da error NullPointerException :S

Buenas, tengo un problema que me parece muy facil pero no se porque no lo puedo reparar:
Código Javascript:
Ver original
  1. Workbook w = Workbook.getWorkbook(new  File ("Questions.xls"));
  2.  Sheet s = w.getSheet(0);
  3.                    
  4. BufferedWriter bw = new BufferedWriter(new FileWriter("Reporte_Cuestionario.txt"));
  5.  
  6. for (int itP=1; itP<=InPreg; itP++) {
  7.                    
  8.                 opcM = "";
  9.                 int r=1;
  10.                
  11.                 String choiceA = h3+s.getCell(r,itP).getContents()+_h3,
  12.                          choiceB = h3+s.getCell(r+1,itP).getContents()+_h3,
  13.                          choiceC = h3+s.getCell(r+2,itP).getContents()+_h3;
  14.                          
  15.                 Object[] choices = {choiceA, choiceB, choiceC};
  16.                                    
  17.                 opcChoice = JOptionPane.showOptionDialog(null,
  18.                         h1+itP+". "+s.getCell(0,itP).getContents()+_h1,
  19.                         " ",
  20.                         JOptionPane.YES_NO_CANCEL_OPTION,
  21.                         JOptionPane.QUESTION_MESSAGE,
  22.                         null,
  23.                         choices,
  24.                         choiceA);
  25.  
  26.                 if (opcChoice == 0) { chD = "A"; }
  27.                     else if (opcChoice == 1) { chD = "B"; }
  28.                         else if (opcChoice == 2) { chD = "C"; }
  29.  
  30.                 if (chD.equalsIgnoreCase("A")) {
  31.                     opcA_= 1;
  32.                     if ((s.getCell(s.getColumns()-1,itP).getContents()).equals("A")) {
  33.                         SpregC += "#"+itP+" ";
  34.                         CI = "CORRECTO";
  35.                         ac_++;
  36.                         _ReportFinal(s,itP,opcA_,opcA_,CI);
  37.                     } else {
  38.                         SpregE += "#"+itP+" ";
  39.                         CI = "INCORRECTO";
  40.                         er_++;
  41.                         _RespCorrect(s,itP,_R,opcA_,CI);
  42.                       }
  43.                                                        
  44.                       } else if ...//Y hay otros 2 IFS para B y C igual al de A
  45.  
  46. //DESPUES.....
  47.  
  48. private void _ReportFinal(Sheet s, int itP, int RespC, int RespABC, String CI) {
  49.        
  50.         _Foutput += itP+":  "+s.getCell(0,itP).getContents()+
  51.                             "\r\n    Respuesta Correcta: "+s.getCell(s.getColumns()-1,itP).getContents()+
  52.                                 ") "+s.getCell(RespC,itP).getContents()+"\r\n    Su Respuesta: "+opcP.toUpperCase()+
  53.                                     ") "+s.getCell(RespABC,itP).getContents()+"\r\n    "+CI+"\r\n\r\n";
  54.         System.out.print("ENTRO A REPORTE");
  55.      }

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
  1. Object[] choices = {choiceA, choiceB, choiceC};
  2.                                    
  3.                 opcChoice = JOptionPane.showOptionDialog(null,
  4.                         h1+itP+". "+s.getCell(0,itP).getContents()+_h1,
  5.                         " ",
  6.                         JOptionPane.YES_NO_CANCEL_OPTION,
  7.                         JOptionPane.QUESTION_MESSAGE,
  8.                         null,
  9.                         choices,
  10.                         choiceA);
  11.  
  12.                 if (opcChoice == 0) { chD = "A"; }
  13.                     else if (opcChoice == 1) { chD = "B"; }
  14.                         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
  1. if (chD.equalsIgnoreCase("A")) {
  2.                     opcA_= 1;
  3.                     if ((s.getCell(s.getColumns()-1,itP).getContents()).equals("A")) {
  4.                         SpregC += "#"+itP+" ";
  5.                         CI = "CORRECTO";
  6.                         ac_++;
  7.                         _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 !!!

Etiquetas: Ninguno
Atención: Estás leyendo un tema que no tiene actividad desde hace más de 6 MESES, te recomendamos abrir un Nuevo tema en lugar de responder al actual.
Respuesta




La zona horaria es GMT -6. Ahora son las 08:50.