JAVA - Skips the input of one of the variables and terminates the code

Asked

Viewed 221 times

0

I’m making a simple read code for product registration. When I am entering the information in each variable, a variable with primitive type double or int, it skips the other that would be a stringe terminates my code.

Under code:

public class Program {

public static void main(String[] args) {

    Scanner scanner = new Scanner(System.in);
    ProdutoCarrinho produtoCarrinho = new ProdutoCarrinho();
    ProdutoCarrinho produtoCarrinho2 = new ProdutoCarrinho();
    //ProdutoCarrinho produtoCarrinho3 = new ProdutoCarrinho();


    System.out.println("Informe Id do produto:");
    produtoCarrinho.id = scanner.nextLine();

    System.out.println("Informe nome do produto:");
    produtoCarrinho.nome = scanner.nextLine();

    System.out.println("Informe a quantidade:");
    produtoCarrinho.quantidade = scanner.nextInt();

    System.out.println("Informe o valor do produto:");
    produtoCarrinho.valor = scanner.nextDouble();



    // 2º carrinho

    System.out.println("Informe Id do produto:");
    produtoCarrinho2.id = scanner.nextLine();

    System.out.println("Informe nome do produto:");
    produtoCarrinho2.nome = scanner.nextLine();

    System.out.println("Informe a quantidade:");
    produtoCarrinho2.quantidade = scanner.nextInt();

    System.out.println("Informe o valor do produto:");
    produtoCarrinho2.valor = scanner.nextDouble();

    System.out.println("ID do produto: " + produtoCarrinho.id);
    System.out.println("Nome do produto: " + produtoCarrinho.nome);
    System.out.println("O valor do produto: " + produtoCarrinho.valor);
    System.out.println("Quantidade total: " + produtoCarrinho.quantidade);

Here is an example of the response at input time.

Inform Product Id: 1 Please enter the product name: note Please enter the quantity: 1 Enter the product value: 3000 Inform Product Id: Please enter product name:

2 answers

0

After reading the double with scanner.nextDouble() utilize scanner.next() instead of scanner.nextLine().

...
System.out.println("Informe Id do produto:");
produtoCarrinho2.id = scanner.next();

System.out.println("Informe nome do produto:");
produtoCarrinho2.nome = scanner.next();
...

0

You would have to post the Product class too and you could insert the whole operation into a block try...catch to see if there are any specific errors regarding the input. But the problem is in the scanner.int(). This operation does not consume the input line. On the next call from scanner.nextLine() you will receive an empty string from scanner.int() previous. You could modify your code to only use the scanner.nextLine() and make the necessary conversions:

Scanner scanner = new Scanner(System.in);

System.out.println("Informe Id do produto:");
String idLendo = scanner.nextLine();
int id = Integer.parseInt(idLendo);

System.out.println("Informe nome do produto:");
String nome = scanner.nextLine();

System.out.println("Informe a quantidade:");
String quantidadeLendo = scanner.nextLine();
int quantidade = Integer.parseInt(quantidadeLendo);

System.out.println("Informe o valor do produto:");
String valorLendo = scanner.nextLine();
Double valor = Double.parseDouble(valorLendo);

System.out.println(id + " " + nome + " " + quantidade + " " + valor);

--- Exit

Informe Id do produto:
1
Informe nome do produto:
nome
Informe a quantidade:
23
Informe o valor do produto:
3000
1 nome 23 3000.0

Browser other questions tagged

You are not signed in. Login or sign up in order to post.