Página Inicial do Fórum > Java Básico

java.lang.NullPointerException, o que é isso?



Criar novo tópico   Responder tópico
  1. Comment Arrow

    Publicado em: 09/04/2009 23:18:44

    boa noite amigos

    estou varando a noite aqui fazendo um trabalhinho de faculdade aqui e estou com o seguinte código:



    e ao executar esse código acima está exibindo o seguinte erro:



    notei que está apontando os erros quando chama a função menu e quando acontece a entrada de valores para a variável opcao. mas não consegui identificar o erro, alguém pode me ajudar?

    Aproveitando a oportunidade, gostaria de saber também se em java já existe alguma função nativa para verificar se uma String é uma data válida e o mesmo com hora.

    Muito Obrigado



  1. afviriato
    Posts:878


    Comment Arrow

    Publicado em: 09/04/2009 23:18:44

    Bruno_Ferreira
    boa noite amigos


    A NullPointerException ocorre quando você tenta acessar um método (ou atributo) de uma instância que está nula. No seu caso, acontece o erro, por que na linha 33:

    a variável c, está nula.

    Dê uma olhada na documentação da classe Console para maiores detalhes.


    Aproveitando a oportunidade, gostaria de saber também se em java já existe alguma função nativa para verificar se uma String é uma data válida e o mesmo com hora.


    Para validar uma data, pode ser mais ou menos assim:

    Para validar a hora, basta trocar o formato para "hh:mm:ss"
    Abraços...
    _________________
    Alexandre Viriato



  1. cfh
    Posts:820


    Comment Arrow

    Publicado em: 09/04/2009 23:18:44

    Leitura do erro

    Exception in thread "main" java.lang.NullPointerException
    at Principal.menu(Principal.java:33)
    at Principal.main(Principal.java:1


    NullPointerException: tentando acessar um método de um objeto "null", exemplo

    at Principal.menu: dentro do método menu da classe Principal

    (Principal.java:33): na linha 33 do arquivo Principal.java; essa é uma informação bem útil, é a linha do erro

    at Principal.main(Principal.java:1: indica de onde o método anterior foi chamado: método main da classe Principal, linha 18 de Principal.java.

    etc: se tivesse mais métodos.

    Interpretação: vou ter que chutar um pouco, pois não sei qual das linhas acima corresponde à linha 33 do seu arquivo, mas parece que a numeração está correta.
    Deve ser aqui

    nessa linha somente tem um objeto que pode ser "null", a variável "c", inicializada na linha 5:

    leu a documentação do método "console()"?

    System
    Returns:
    The system console, if any, otherwise null.


    aparentemente existem sistemas que não tem a console, inclusive se rodar pelo eclipse não terá a console do System.

    Solução: teste se o valor retornada pelo console() é null, se for vai ter que usar uma alternativa. Ou use diretamente o Swing (GUI).

    _________________
    Carlos H.
    >

  1. Comment Arrow

    Publicado em: 09/04/2009 23:18:44

    o caso é que eu não estou usando nenhuma GUI (e nem sei bem como),
    no caso eu estou usando como editor o JCreator LE e mandando compilar e rodar através dele será que é isso então? se eu mandar rodar pelo prompt ele roda? e se tenho que passar algum parametro no qual parametro eu passo?



  1. cfh
    Posts:820


    Comment Arrow

    Publicado em: 09/04/2009 23:18:44

    Bruno_Ferreira
    o caso é que eu não estou usando nenhuma GUI (e nem sei bem como),
    no caso eu estou usando como editor o JCreator LE e mandando compilar e rodar através dele será que é isso então? se eu mandar rodar pelo prompt ele roda? e se tenho que passar algum parametro no qual parametro eu passo?


    parâmetro? olhou a documentação, não diz nada de parâmetro.
    Se tiver que usar o console, provavelmente vai ter que executar o seu programa numa janela (console) DOS (ou shell no linux), em vez de no JCreator.
    Outra alternativa seria usar o System.in (System.out para saida), talvez com um Scanner para facilitar.

    _________________
    Carlos H.
    >



  1. Relacionados





Novo tópico   Responder tópico     Índice do forum -> Java Básico