Logica de Quiz ( tentei faer um quiz para o tcc porem estou com dificuldade na logica e aparece o erro java.lang.NumberFormatException: null)

Galera, estou desesperado quero salvar a pontuacao e u banco de dados mas nao consigo se algue souber me ajuda, analisa por favor o que estou errando na minha programacao
. vlw.

Servelet
package ifrn.model;

import static com.sun.org.apache.xalan.internal.xsltc.compiler.util.Type.Int;
import db.DBConnection;
import java.io.IOException;
import java.io.PrintWriter;
import javax.servlet.ServletException;
import javax.servlet.annotation.WebServlet;
import javax.servlet.http.HttpServlet;
import javax.servlet.http.HttpServletRequest;
import javax.servlet.http.HttpServletResponse;
import java.sql.PreparedStatement;

/**
*

  • @author Joyce
    */
    @WebServlet(name = “Pratica”, urlPatterns = {"/Pratica"})
    public class Pratica extends HttpServlet {

    protected void doGet(HttpServletRequest request,
    HttpServletResponse response) throws ServletException, IOException {
    doPost(request, response);
    }
    int pontuacao = 0;

    protected void doPost(HttpServletRequest request, HttpServletResponse response)
    throws ServletException, IOException {
    response.setContentType(“text/html;charset=UTF-8”);
    String questao = request.getParameter(“questao”);
    System.out.println(questao);

       {  if (questao.equals("op1")) {
             System.out.println("");
         } else if (questao.equals("op2")) {
             System.out.println("");
         } else if (questao.equals("op3")) {
             pontuacao = pontuacao + 1;
         } 
        {
         if (request.getSession().getAttribute("pontuacao") == null) {
             request.getSession().setAttribute("pontuacao", pontuacao); //pontuacao é a variavel que voce quer salvar
         } else {
             pontuacao = (Integer) request.getSession().getAttribute("pontuacao");
             request.getSession().setAttribute("pontuacao", pontuacao);
         }
         /* TODO output your page here. You may use following sample code. */
      UsuarioDao dao= new UsuarioDao(); 
      Usuario usuario = new Usuario(); 
      PreparedStatement pst = null; 
      DBConnection con = null;  
      usuario.setPontuacao(  Integer.parseInt(request.getParameter("pontuacao")));
    dao.ValidarResposta(usuario); 
    String redirectURL = "listarUsuarios.jsp"; 
    response.sendRedirect(redirectURL);   
    
    
    
    
    
     }}
    

    }
    }

Jsp

<head>
    <meta http-equiv="Content-Type" content="text/html; charset=utf-8" />
    <title>Sidebar menu</title>
    <link rel="stylesheet" type="text/css" href="style.css">
</head>
<body>

    <div id=sidebar>
        <div id="pic" align="center"><img src="img/IFPrologo.png" height="180px" width="180px" id="userpic"></div>
        <ul>
            <li><a href="meusdados.html">Meus dados</a>
                <ul><li><a href="editar.jsp">Editar dados</a></li>
                    <li><a href="meusresultados.html">Meus resultados</a></li></ul></li>

            <li><a href="buscarConteudoPorDisciplina.jsp">Conteúdo disponível</a>
                <ul><li><a href="buscarConteudoPorNome">Português</a></li><li><a href="buscarConteudoPorNome">Matemática</a></li></ul></li>

            <li><a href="simulado.jsp">Aplicações</a><ul><li><a href="simulado.jsp">Simulados</a></li></ul></li>
        </ul>

    </div>

Prática

img src="https://aletp.com.br/wp-content/uploads/2017/06/dicas-para-se-concentrar.jpg" style='height:241px; width:600px' />

Leia o texto a seguir para responder à questão: A outra noite Outro dia fui a São Paulo e resolvi voltar à noite, uma noite de vento sul e chuva, tanto lá como aqui. Quando vinha para casa de táxi, encontrei um amigo e o trouxe até Copacabana; e contei a ele que lá em
cima,além das nuvens, estava um luar lindo, de lua cheia; e que as nuvens feias que cobriam a cidade eram,
vistas de cima, enluaradas, colchões de sonho, alvas, uma paisagem irreal. Depois que o meu amigo desceu do carro, o chofer aproveitou o sinal fechado para voltar-se para mim: - O senhor vai desculpar, eu estava aqui a ouvir sua conversa. Mas, tem mesmo luar lá em cima? Confirmei: sim, acima da nossa noite preta e enlamaçada e torpe havia uma outra – pura, perfeita e linda. - Mas, que coisa... Ele chegou a pôr a cabeça fora do carro para olhar o céu fechado de chuva. Depois continuou guiando mais lentamente. Não sei se sonhava em ser aviador ou pensava em outra coisa. - Ora, sim senhor... E, quando saltei e paguei a corrida, ele me disse um “boa noite” e um “muito obrigado ao senhor” tão sinceros, tão veementes, como se eu lhe tivesse feito um presente de rei. Rubem Braga Analisando as principais características do texto lido, podemos dizer que seu gênero predominante é:

a)Conto
b)Poesia
c)Prosa
d)Crônica
e)Diário

Porem esta dando o erro
java.lang.NumberFormatException: null

Em qual das linhas isso ocorre?

depois que eu executo o jsp e marco a resposta a pagina é direcionada para o servelet
e mostra o erro 505
HTTP Status 500 - Internal Server Error

type Exception report

messageInternal Server Error

descriptionThe server encountered an internal error that prevented it from fulfilling this request.

exception
java.lang.NumberFormatException: null

note The full stack traces of the exception and its root causes are available in the GlassFish Server Open Source Edition 4.1.1 logs.

GlassFish Server Open Source Edition 4.1.1

Ainda assim, no console do teu servidor, você deve conseguir encontrar essa mensagem “java.lang.NumberFormatException: null” e a referência a uma linha onde o erro ocorre.

Porque você está tentando atribuir um valor para pontuação se você verificou que é null e não existe nada para receber?

Deve ser aqui que está o erro.

eu tirei aquela linha e ficou um novo erro

type Exception report

messageInternal Server Error

descriptionThe server encountered an internal error that prevented it from fulfilling this request.

exception
java.lang.RuntimeException: java.sql.SQLException: Field ‘nome’ doesn’t have a default value

note The full stack traces of the exception and its root causes are available in the GlassFish Server Open Source Edition 4.1.1 logs.

eu olhei o console e
nao aparece erro

Cara no console aparece em qual linha ocorreu o erro, pode olhar e postar aqui?

Galera rodou só depois que eu coloquei todo mundo como null no phpmyadmin menos a pontuação. marquei a opção certa e mesmo assim a pontuacao nao cresce. alguem tem algua ideia²?

Esta exceção é dada quando você tem um INSERT e não passa um valor para a coluna “nome”. Revise tua query de inserção e verifique isso.

Provavelmente você está se perdendo na inserção dos valores.

o problema é que eu nao como eu posso fazer isso
o meu dao de autenticar a questao
public boolean ValidarResposta(Usuario usuario) {
String sql =
“INSERT INTO usuario (pontuacao ) VALUES (?)”;
UsuarioDao usuarioDao = new UsuarioDao();

    try { 
         PreparedStatement pst = con.prepareStatement(sql);
        pst = con.prepareStatement(sql);
        pst.setInt(1, usuario.getPontuacao());
        
      
        
        int res = pst.executeUpdate();
        if (res == 1) {
            return true;
        }

eu queria acrescentar somente em um lugar que já existe nome e esss coiss e nessa tabela usuario tem a coluna pontuacao e eu iria a cada resposta aumentando

Se entendi direito, então ao invés de uma inserção, você deve fazer um update na linha desejada.
Exemplo:
UPDATE usuario SET pontuacao WHERE usuario_que_deve_ser_alterado;

Só que para não ficar algo repetitivo e a cada vez ter que se recuperar o valor e alterar depois.

Se a aplicação permitir, responda todas as questões, depois altere a pontuação, para não ter que somar todas as vezes que ele acertar.

show!!! Exatamente assim.
mas eu queria saber como eu faço isso com o login, por exemplo eu nao queria determinar o usuario mas eu queria logar e essa funcao acontecer quando eu logar como fica .

Como assim quando você logar vai executar uma query de update para aumentar a pontuação?
Apenas por logar você vai ganhar pontos?
Não consegui entender, poderia explicar melhor?

Acho que você quer: Ao fazer login no sistema, você irá conseguir ver a pontuação de todos os usuários, certo?
Se for isso, é através do select.
SELECT * FROM USUARIO;

acredito que conseguir logar!
meu dao
public Boolean existe(Usuario usuario) {
String sql=
“SELECT * FROM usuario WHERE email=’”+ usuario.getEmail() + “’ AND senha= ’ “+ usuario.getSenha()+”’”;

    try {
        PreparedStatement pst = con.prepareStatement(sql);
        pst = con.prepareStatement(sql);
      
        ResultSet rs = pst.executeQuery();
         
        while (rs.next()) {
            Usuario a = new Usuario();
            a.setEmail(rs.getString("email"));
            a.setSenha(rs.getString("senha"));
       
        }
    
    } catch (SQLException ex) {
        throw new RuntimeException (ex);
    }

return true;
}
e o meu servelet

protected void doPost(HttpServletRequest request, HttpServletResponse response)
throws ServletException, IOException {
response.setContentType(“text/html;charset=UTF-8”);
try (PrintWriter out = response.getWriter()) {

       UsuarioDao dao= new UsuarioDao(); 
     Usuario usuario = new Usuario(); 
     PreparedStatement pst = null; 
     DBConnection con = null;  
         usuario.setEmail(request.getParameter("email")); 
     usuario.setSenha(request.getParameter("senha")); 
 dao.existe(usuario); 
   String redirectURL = "praticap1.jsp"; 
   response.sendRedirect(redirectURL);  
            }
  } 

galera o problema é isso que rodrigo citou eu so queria saber como fica a continuacao para encaixar a pontuacao para qualquer um que logar. desde já agradeço ao rodrigo. e a quem puder me ajudar!

vc me mostrou o caminho certo. mas eu nao sei como fica a continuação para a pessoa que logar por exemplo quando ela marcar a posição corretaa na pratica o valor da pontuacao dela vai ser alterado e vai ser acrecido cada vez mais. o unico problema é que eu nao tenho minia ideia de como completar essa frasse: UPDATE usuario SET pontuacao WHERE usuario_que_deve_ser_alterado(EU NAO SEI O QUE VOU COLOCAR AQUI) eu queria colocar ai por exeplo todo o candidato que logar ele vai fazer a pratica, marcando a posicao correta da resposta ele é direcionado para o dao que vc fez e a pontuacao será aumentada entendeu?

;

CONSEGUI GALERA!!! DEUS É FIEL !!!
MUITO OBRIGADO A TODOS QUE ME AJUDARAM OBRIGADO MESMO!!!
DEUS É BOM O TEMPO E TODO O TEMPO ELE É BOM!
esse tcc vai sair kkkk

Que bom que conseguiu resolver, poste o resultado para outras pessoas que tenham dúvidas parecidas.