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 Saini is an android developer, who also works sometimes as a web developer., He likes to read books and write about various things.
LinkedIn