Pressione Enter para continuar em Java

Rupam Yadav 12 outubro 2023
Pressione Enter para continuar em Java

Este artigo mostrará como colocamos o console em espera até que o usuário pressione Enter; em seguida, a próxima mensagem será exibida. No exemplo a seguir, usaremos a classe Scanner para pegar três entradas e depois mostrá-las no console.

Usando um Extra nextLine() para aguardar a chave de entrada em Java

No exemplo, criamos um objeto da classe Scanner, sc. Scanner verifica o texto e analisa tipos primitivos como int e String. Essa classe vem com muitos métodos que são usados ​​em operações de entrada. Os métodos mais comumente usados ​​são nextInt(), nextLine, nextDouble e etc.

No exemplo abaixo, veremos onde está o problema e usaremos uma técnica para resolvê-lo no próximo.

Aqui, pegamos três entradas: o tipo int e as próximas duas são dos tipos String. Usamos a classe Scanner para primeiro chamar o método nextInt() para obter a entrada de idade em uma variável do tipo int; então, para obter a entrada para o nome e o sobrenome, usamos dois métodos sc.nextLine() e duas variáveis ​​para armazená-los. Por fim, mostramos todos os valores das variáveis ​​na saída.

O problema reside quando o usuário insere o valor para age e pressiona Enter. O console deve obter a entrada para firstName, mas a ignora e vai diretamente para o lastName. A saída abaixo mostra o problema claramente.

import java.util.Scanner;

public class EnterContinue {
  public static void main(String[] args) {
    Scanner sc = new Scanner(System.in);
    System.out.print("Enter your age: ");
    int age = sc.nextInt();

    System.out.print("Enter your First Name: ");
    String firstName = sc.nextLine();

    System.out.print("Enter your last Name: ");
    String lastName = sc.nextLine();

    System.out.println("Your Info:\nAge: " + age + "\nFull Name: " + firstName + " " + lastName);
  }
}

Resultado:

Enter your age: 23
Enter your First Name: Enter your last Name: John
Your Info:
Age: 23
Full Name:  John

Process finished with exit code 0

Agora que conhecemos o problema, podemos discutir a solução e por que o problema ocorre em primeiro lugar. Quando tomamos um valor int como entrada, o método nextInt() lê o valor int e não pode ler a nova linha. É por isso que quando pressionamos Enter depois de ler int, o console o vê como uma nova linha e salta para a seguinte instrução.

Temos que usar um método nextLine() extra após a função nextInt() que irá ignorar a nova linha e mostrar a próxima linha para resolver esse problema. Na saída, podemos ver que agora podemos inserir o primeiro nome, o que não era possível no exemplo anterior.

import java.util.Scanner;

public class EnterContinue {
  public static void main(String[] args) {
    Scanner sc = new Scanner(System.in);
    System.out.print("Enter your age: ");
    int age = sc.nextInt();

    System.out.print("Enter your First Name: ");
    String firstName = sc.nextLine();
    sc.nextLine();

    System.out.print("Enter your last Name: ");
    String lastName = sc.nextLine();

    System.out.println("Your Info:\nAge: " + age + "\nFull Name: " + firstName + " " + lastName);
  }
}

Resultado:

Enter your age: 5
Enter your First Name: gfd
Enter your last Name: gfgf
Your Info:
Age: 5
Full Name:  gfgf
Rupam Yadav avatar Rupam Yadav avatar

Rupam Saini is an android developer, who also works sometimes as a web developer., He likes to read books and write about various things.

LinkedIn

Artigo relacionado - Java Scanner