[Duvida] os codigos sao iguais, mas somente um funciona

Java

10/05/2016

[img]https://thumbp24-bf1.mail.yahoo.com/tn?sid=14636699424054023&mid=AMfmjkQAAHMmVy3%2BAQHQ2L%2FPW84&midoffset=2_0_0_2_23196&partid=2&f=1400&fid=Sent&ymreqid=b1221719-157a-7da3-01e8-da0024010000&m=ThumbnailService&w=3000&h=3000[/img]

Porque o codigo da esquerda funciona e o da direita nao? estou fazendo um projeto em java no eclipse e sempre que eu coloco o scanner em cima (igual ao da direita) na hora que coloco pra funcionar ele passa do try para o catch direto, e como se a leitura nao existisse.
Luis Eduardo

Luis Eduardo

Curtidas 0

Respostas

Miguel Junior

Miguel Junior

10/05/2016

Bom dia, Luis Eduardo.

Não consigo visualizar a imagem que vc anexou em sua pergunta.
GOSTEI 0
Luis Eduardo

Luis Eduardo

10/05/2016

Bom dia, Luis Eduardo.

Não consigo visualizar a imagem que vc anexou em sua pergunta.


[img]https://uploaddeimagens.com.br/images/000/625/480/full/tn.png?1463927407[/img]
GOSTEI 0
Miguel Junior

Miguel Junior

10/05/2016

Boa tarde , Luis Eduardo.

Cara, fiz um teste das duas implementações deu a impressão de loop infinito por conta do comando while além de nem conseguir digitar um número.
GOSTEI 0
Luis Eduardo

Luis Eduardo

10/05/2016

o que eu to na duvida e o Scanner, o codigo funciona normalmente, mas quando eu coloco o Scanner de fora do try a leitura e ignorada, sei q isso e problema de buffer do teclado, mas como sou curioso eu queria saber pq isso ocorre.
GOSTEI 0
Renan Di

Renan Di

10/05/2016

No código da direita que apresenta o erro o Scanner foi inicializado fora de um método nem mesmo no construtor da classe ele foi inicializado, assim não dá pra garantir que ele será inicializado no momento do uso, por isso ou você usa ele dentro de algum método ou você cria um trecho de código assim:

static {
Scanner in = new Scanner(System.in);
}


dessa forma você garante que ele será inicializado junto com a instância da classe.
Você deveria colocar um e.printStackTrace no seu catch pra ver a mensagem de erro, eu imagino que você deve ter pegou ou TypeMismatch ou NullPointerException.
GOSTEI 0
Luis Eduardo

Luis Eduardo

10/05/2016

tendi, vlw.
GOSTEI 0
POSTAR