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