Ajuda Java, por favor

Boa noite, podem me ajudar?
Estou começando em Java e está dando erro que não estou conseguindo saber do que se trata.
Eu peço para o usuário entrar com o nome, mas nem aparece nada para digitar e já dá logo esse erro.

Aparentemente ele não está encontrando o valor da linha 15. Minha dica é colocar um break point na linha 15 e rodar um debug para analisar o que está vindo na linha 15.
A segunda dica é tentar entender melhor se o Scanner está implementado corretamente, vou deixar esse link com algumas explicações do Scanner.

2 curtidas

Você pode Trocar o

String nome = leitor.nextLine();

Por

String nome = leitor.next();
1 curtida

A priori, seu código não deveria dar problema na execução, visto que você faz a leitura de uma linha primeiro e depois dos outros tipos. O buffer de entrada vai estar no estado correto para o nextInt() atuar. O “problema” é misturar leitura de linhas com outros tipos. Para evitar esse tipo de situação, sempre leia linha por linha e, para cada linha, converta para o tipo esperado como no exemplo abaixo.

Agora, o que parece ser seu problema realmente, é que você criou um projeto usando o Gradle. Para projetinhos simples, programas de brinquedo com o seu, onde o objetivo é aprender os conceitos básicos, crie projetos usando o Ant: File → New Project → Java with Ant (em categories) → Java Application (em projects).

Além disso, ainda com seu projeto Gradle, faça o seguinte teste. Com o arquivo de código ativo, ou seja, com o cursor do mouse piscando nele, use o atalho Shift+F6 para compilar e executar somente esse arquivo e as dependências dele. Pode ser que funcione. Eu não uso o Gradle, mas vou criar um projeto aqui para testar e logo atualizo essa postagem.

EDIT: criei um projeto Gradle, NetBeans 14, e seu código funcionou normalmente. Atualize seu NetBeans e crie um novo projeto. Prefira o Ant para esses tipos de implementações.

String nome;
int idade;
float cotacaoDolar; // normalmente se usa double não float.

Scanner leitor = new Scanner( System.in );

...
nome = leitor.nextLine();

...
idade = Integer.parseInt( leitor.nextLine() );

...
cotacaoDolar = Float.parseFloat( leitor.nextLine() );
1 curtida

Oi Davi, muito obrigado. Eu rodei com o shift+F6 e funcionou normalmente. Eu não sabia sobre o Gradle, fui conforme o instrutor tinha passado, mas agora vou pelo caminho como você me ensinou. Muito Obrigado mesmo e pela dica do Double também. Como eu sou iniciante, não sabia mesmo sobre isso. Um grande abraço.

1 curtida

Oi Pablo, vou dar uma olhada no seu post sobre Scanner. Muito obrigado.

1 curtida