Classe Scanner em Java
Scanner é uma classe no pacote java.util usada para obter a entrada dos tipos primitivos como int, double, etc. e strings. É a maneira mais fácil de ler a entrada em um programa Java, embora não seja muito eficiente se você quiser um método de entrada para cenários onde o tempo é uma restrição, como na programação competitiva.
- Para criar um objeto da classe Scanner, normalmente passamos o objeto predefinido System.in, que representa o fluxo de entrada padrão. Podemos passar um objeto da classe File se quisermos ler a entrada de um arquivo.
- Para ler valores numéricos de um determinado tipo de dados XYZ, a função a ser usada é nextXYZ(). Por exemplo, para ler um valor do tipo short, podemos usar nextShort()
- Para ler strings, usamos nextLine().
- Para ler um único caractere, usamos next(). CharAt (0). A função next() retorna o próximo token / palavra na entrada como uma string e a função charAt (0) retorna o primeiro caractere nessa string.
Vejamos o fragmento de código para ler dados de vários tipos de dados.
// Java program to read data of various types using Scanner class.
import java.util.Scanner;
public class ScannerDemo1
{
public static void main(String[] args)
{
// Declare the object and initialize with
// predefined standard input object
Scanner sc = new Scanner(System.in);
// String input
String name = sc.nextLine();
// Character input
char gender = sc.next().charAt(0);
// Numerical data input
// byte, short and float can be read
// using similar-named functions.
int age = sc.nextInt();
long mobileNo = sc.nextLong();
double cgpa = sc.nextDouble();
// Print the values to check if the input was correctly obtained.
System.out.println("Name: "+name);
System.out.println("Gender: "+gender);
System.out.println("Age: "+age);
System.out.println("Mobile Number: "+mobileNo);
System.out.println("CGPA: "+cgpa);
}
}
Entrada :
Geek F 40 9876543210 9.9
Saída :
Name: Geek Gender: F Age: 40 Mobile Number: 9876543210 CGPA: 9.9
Às vezes, temos que verificar se o próximo valor que lemos é de um determinado tipo ou se a entrada terminou (marcador EOF encontrado).
Em seguida, verificamos se a entrada do scanner é do tipo que desejamos com a ajuda das funções hasNextXYZ() em que XYZ é o tipo no qual estamos interessados. A função retorna true se o scanner tiver um token desse tipo, caso contrário, false. Por exemplo, no código a seguir, usamos hasNextInt(). Para verificar se há uma string, usamos hasNextLine(). Da mesma forma, para verificar se há um único caractere, usamos hasNext(). CharAt (0).
Vejamos o trecho de código para ler alguns números do console e imprimir sua média.
// Java program to read some values using Scanner
// class and print their mean.
import java.util.Scanner;
public class ScannerDemo2
{
public static void main(String[] args)
{
// Declare an object and initialize with
// predefined standard input object
Scanner sc = new Scanner(System.in);
// Initialize sum and count of input elements
int sum = 0, count = 0;
// Check if an int value is available
while (sc.hasNextInt())
{
// Read an int value
int num = sc.nextInt();
sum += num;
count++;
}
int mean = sum / count;
System.out.println("Mean: " + mean);
}
}
Entrada:
101 223 238 892 99 500 728
Saída:
Mean: 397
Este artigo foi contribuído por Sukrit Bhatnagar . Se você gosta de GeeksforGeeks e gostaria de contribuir, você também pode escrever um artigo e enviá-lo para contrib@geeksforgeeks.org. Veja o seu artigo na página principal do GeeksforGeeks e ajude outros Geeks.
Escreva comentários se encontrar algo incorreto ou se quiser compartilhar mais informações sobre o tópico discutido acima
As postagens do blog Acervo Lima te ajudaram? Nos ajude a manter o blog no ar!
Faça uma doação para manter o blog funcionando.
70% das doações são no valor de R$ 5,00...
Diógenes Lima da Silva