CodeGym /Cursos /JAVA 25 SELF /Entrada pelo teclado

Entrada pelo teclado

JAVA 25 SELF
Nível 2 , Lição 5
Disponível

1. Leitura do console, System.in

Nas aulas anteriores, conhecemos os comandos de saída na tela. Para isso, usamos o objeto System.out e seus métodos print() e println(). Simples e prático.

Mas, como você provavelmente já imagina, apenas imprimir na tela não é suficiente. O objetivo da maioria dos programas — fazer algo útil para o usuário. Por isso, é muito comum precisar que o usuário possa digitar dados pelo teclado.

Assim como para a saída, para a entrada de dados também existe um objeto específico — System.in. Mas, infelizmente para nós, ele não é tão conveniente quanto gostaríamos. Esse objeto permite ler dados do teclado, mas apenas um caractere por vez.

Por isso, usaremos mais uma classe que, em conjunto com o objeto System.in, nos dará tudo de que precisamos. Em Java já existem, há muito tempo, classes para todos os casos. E agora vamos conhecer uma delas.

2. A classe Scanner

A classe Scanner (nome completo java.util.Scanner) sabe ler dados de diferentes fontes: console, arquivos, Internet. Se quisermos que ela leia dados do teclado, devemos passar o objeto System.in como parâmetro — a fonte de dados. O objeto do tipo Scanner então decidirá o que fazer com isso.

A leitura pelo teclado com um objeto do tipo Scanner ficará mais ou menos assim:

Código Explicação
Scanner console = new Scanner(System.in);
String name = console.nextLine();
int age = console.nextInt();
Criamos um objeto da classe Scanner. Lemos do teclado uma linha de texto. Lemos do teclado um número.

Parece simples, mas será que é mesmo?

Acho que você já tem um monte de perguntas, e agora vamos respondê-las.

Mas, antes de tudo, vamos demonstrar um exemplo de programa completo que usa a classe Scanner:

void main()
{
    Scanner console = new Scanner(System.in);
    String name = console.nextLine();
    int age = console.nextInt();

    System.out.println("Name: " + name);
    System.out.println("Age: " + age);
}

3. Criação de um objeto Scanner

Primeira pergunta — o que é esta linha Scanner console = new Scanner(System.in);?

Uma linha como essa pode confundir, porém você vai encontrar coisas parecidas o tempo todo. Então acho que é hora de explicar o que está escrito aqui.

Vamos lembrar como normalmente criamos uma variável com texto:


String str = "texto";
Declaração e inicialização de uma variável String

Primeiro escrevemos o tipo da variável (String), depois o seu nome (str) e, por fim, após o sinal de igual, escrevemos o valor.

Na nossa linha “estranha”, na verdade é a mesma coisa:


Scanner console = new Scanner(System.in);
Declaração e inicialização de uma variável do tipo Scanner

Tudo o que está à esquerda do sinal de igual — é a declaração de uma variável do tipo Scanner chamada console. Poderíamos chamá-la, por exemplo, s ou scanner, ou até keyboard. Então o código ficaria assim:

Scanner s = new Scanner(System.in);
String name = s.nextLine();
int age = s.nextInt();
Scanner scanner = new Scanner(System.in);
String name = scanner.nextLine();
int age = scanner.nextInt();
Scanner keyboard = new Scanner(System.in);
String name = keyboard.nextLine();
int age = keyboard.nextInt();

Acho que agora ficou bem mais claro.

Já o código que está à direita do sinal de igual é um pouco mais complexo. Refiro-me a new Scanner(System.in); Mas também não há nada de outro mundo.

Nesse código, dizemos à máquina Java: crie um novo objeto (palavra new) do tipo Scanner e passe para ele, como parâmetro, aquilo de onde o novo objeto Scanner vai obter os dados — o objeto System.in.

Após a execução dessa linha inteira, teremos uma variável chamada console do tipo Scanner, com a qual nosso programa poderá ler dados do teclado.

4. Chamada de métodos

No exemplo acima, nossa variável console do tipo Scanner guardava internamente uma referência a um objeto do tipo Scanner.

Para chamar os métodos do objeto ao qual a variável se refere, é preciso escrever um ponto após o nome da variável e, em seguida, o nome do método e os parâmetros. A forma geral desse comando é:


peremennaya.metod(parametry);
Chamada de um método do objeto ao qual a variável se refere

Exemplos:

System.out.println("Olá");
System.out.println(1);

Se você não pretende passar parâmetros para a função, basta escrever parênteses vazios:


peremennaya.metod();
Chamada de método sem passar parâmetros

Exemplo:

System.out.println();

5. Entrada de dados pelo console

Ler dados do teclado, quando temos um objeto do tipo Scanner, é muito fácil.

Para ler do teclado uma linha, use o comando:


String str = console.nextLine();

Quando o programa chegar à execução dessa linha, ele será pausado e aguardará até que o usuário digite os dados e pressione a tecla Enter. Depois disso, tudo o que o usuário digitou será salvo na variável str.

Para ler do teclado um número inteiro, use o comando:


int number = console.nextInt();

Aqui tudo é análogo ao comando anterior. Quando o programa chegar à execução dessa linha, ele será pausado e aguardará até que o usuário digite os dados e pressione a tecla Enter. Depois disso, tudo o que o usuário digitou será convertido para número e salvo na variável number.

Se o usuário inserir dados que não possam ser convertidos para um número inteiro, ocorrerá um erro no programa e ele será encerrado.

Para ler do teclado um número de ponto flutuante, use o comando:

double number = console.nextDouble();

Esse comando é totalmente análogo ao nextInt(), apenas verifica se os dados informados podem ser convertidos para um número double.

Exemplo de um programa que lê dois números do teclado e imprime sua soma:

void main()
{
    Scanner console = new Scanner(System.in);
    int a = console.nextInt();
    int b = console.nextInt();

    System.out.println(a + b);
}

Observação

O usuário pode digitar vários números em uma única linha, separando-os por espaços: essa situação será tratada corretamente pelos métodos da classe Scanner. No entanto, os números só serão lidos pelo programa depois que o usuário pressionar Enter.

1
Pesquisa/teste
Introdução aos tipos int e String, nível 2, lição 5
Indisponível
Introdução aos tipos int e String
Introdução aos tipos int e String
Comentários
TO VIEW ALL COMMENTS OR TO MAKE A COMMENT,
GO TO FULL VERSION