O programa simplesmente PARA DE FUNCIONAR e não executa nenhum comando (Netbeans)

O meu programa Java simplesmente PARAAA de executar e ele simplesmente não funciona, eu fiz tudo certo, eu não sei o que pode estar errado no meu código para ele não executar, alguém por favor?

Scanner leitor = new Scanner(System.in);

String programa, opc;
int ano;
int total2000 = 0, total = 0;
float valor, valorFinal;
float desconto = 0;
char desejaContinuar = 'S';

while (desejaContinuar == 'S' || desejaContinuar == 's') {
  System.out.println("Digite o valor do carro: ");
  valor = Integer.parseInt(leitor.nextLine());
  
  System.out.println("Digite o ano do carro: ");
  ano = Integer.parseInt(leitor.nextLine());
  
  if (ano <= 2000) {
    desconto = (float) 0.12;
    total2000 = total2000 + 1;
    total = total + 1;
  } else {
    desconto = (float) 0.07;
    total = total + 1;
  }
  
  desconto = desconto * valor;
  valorFinal = valor - desconto;
  
  System.out.println("O valor com desconto: " + valorFinal);
  System.out.println("Deseja continuar?");
  desejaContinuar = leitor.next().charAt(0);
  
  System.out.println("Foram calculados " + total2000 + "Carro(s) do ano ate 2000");
  System.out.println("Total de carros " + total);
}

Posta o código completo da classe.

De acordo com o erro, nessa linha:

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

foi feita uma tentativa de converter uma string vazia "" em número, o que não é possível.

O problema está aqui. O next() não lê o enter. Depois no nextLine() seguinte, que tentas converter para inteiro, vai imediatamente consumir o enter que sobrou de trás e dá erro a converter a String vazia para int.
Ao ler de Scanner deves usar SEMPRE o nextLine().

1 curtida

Mas o while não funciona sem o char, tentei e ficou vermelho

Como assim? ele ta todo ai

Obrigado, funcionou mas pq o erro aconteceu? tava usando

[quote=“Lucas_Camara, post:3, topic:430965”]
ano = Integer.parseInt(leitor.nextLine());
[/quote] justamente pra não ficar tendo problemas na linha como houve com os problemas anteriores, coloquei o leitor next int e funcionou mas o que fazer se o Next Int der problema denovo?

O @pmlm explicou o motivo.

É que você postou só um código parcial do corpo de um método, não a classe inteira.

O (mau) uso do Scanner é um assunto tão recorrente no fórum, que - olha o jabá :slight_smile: - acabei escrevendo este longo post pra explicar tudo em detalhes:

Espero que ajude :+1:

2 curtidas

Muito obrigado :slight_smile: