Entrada e Saída de Dados no Console em Java
A forma mais simples de interagir com o usuário em Java é por meio do console, permitindo exibir informações na tela ou receber dados digitados. Para isso, a linguagem disponibiliza a classe System
, que contém funcionalidades específicas para entrada e saída no console.
Saída no Console
O objeto out
da classe System
representa um fluxo de saída, e seu método println
exibe valores no console, movendo automaticamente o cursor para a próxima linha:
public class Main {
public static void main(String[] args) {
System.out.println("Hello world!");
System.out.println("Bye world...");
}
}
Saída:
Hello world! Bye world...
Se não for necessário mover o cursor para a próxima linha, o método System.out.print()
pode ser utilizado. Ele mantém o cursor na mesma linha:
public class Main {
public static void main(String[] args) {
System.out.print("Hello world!");
System.out.print("Bye world...");
}
}
Saída:
Hello world!Bye world...
Para inserir uma quebra de linha manualmente, a sequência de escape \n
pode ser usada:
System.out.print("Hello world \n");
Quando é necessário exibir variáveis dentro de uma string, a concatenação pode ser usada:
public class Main {
public static void main(String[] args) {
int x = 5;
int y = 6;
System.out.println("x=" + x + "; y=" + y);
}
}
Saída:
x=5; y=6
O método System.out.printf()
permite formatar a saída:
int x = 5;
int y = 6;
System.out.printf("x=%d; y=%d \n", x, y);
Os caracteres %d
são substituídos pelos valores das variáveis x
e y
, respectivamente.
Os especificadores de formato incluem:
%d
: exibe números inteiros%x
: exibe números inteiros em hexadecimal%f
: exibe números de ponto flutuante%e
: exibe números em notação científica (exemplo:1.3e+01
)%c
: exibe um caractere%s
: exibe uma string
Exemplo de formatação com diferentes tipos de dados:
public class Main {
public static void main(String[] args) {
String name = "Tom";
int age = 30;
float height = 1.7f;
System.out.printf("Name: %s Age: %d Height: %.2f \n", name, age, height);
}
}
No caso de números de ponto flutuante, a precisão pode ser ajustada. O especificador %.2f
define que apenas duas casas decimais devem ser exibidas. Saída:
Name: Tom Age: 30 Height: 1.70
Entrada no Console
A entrada de dados no console é representada pelo objeto in
da classe System
, mas trabalhar diretamente com System.in
pode ser pouco prático. O mais comum é utilizar a classe Scanner
, que facilita a leitura de diferentes tipos de dados:
import java.util.Scanner;
public class Main {
public static void main(String[] args) {
Scanner in = new Scanner(System.in);
System.out.print("Input a number: ");
int num = in.nextInt();
System.out.printf("Your number: %d \n", num);
in.close();
}
}
Como a classe Scanner
pertence ao pacote java.util
, é necessário importá-la antes de ser utilizada:
import java.util.Scanner;
O objeto Scanner
é criado passando System.in
para o seu construtor. O método nextInt()
captura o valor digitado e o armazena na variável num
. Exemplo de execução:
Input a number: 10 Your number: 10
A classe Scanner
oferece diversos métodos para capturar diferentes tipos de entrada:
next()
: lê uma palavra até o primeiro espaço em branconextLine()
: lê uma linha completanextInt()
: lê um número inteiro (int)nextDouble()
: lê um número de ponto flutuante (double
)nextBoolean()
: lê um valor booleano (true
oufalse
)nextByte()
: lê um número no formatobyte
nextFloat()
: lê um número no formatofloat
nextShort()
: lê um número no formatoshort
Cada tipo de dado primitivo tem um método correspondente na classe Scanner
. No exemplo abaixo, os dados de um usuário são capturados e exibidos no console:
import java.util.Scanner;
public class Main {
public static void main(String[] args) {
Scanner in = new Scanner(System.in);
System.out.print("Input name: ");
String name = in.nextLine();
System.out.print("Input age: ");
int age = in.nextInt();
System.out.print("Input height: ");
float height = in.nextFloat();
System.out.printf("Name: %s Age: %d Height: %.2f \n", name, age, height);
in.close();
}
}
Exemplo de execução:
Input name: Tom Input age: 30 Input height: 1.7 Name: Tom Age: 30 Height: 1.70
Resumo
System.out.println()
: imprime no console e move o cursor para a próxima linha.System.out.print()
: imprime sem mover o cursor para a próxima linha.\n
: quebra de linha dentro deSystem.out.print()
.- Scanner: facilita a entrada de dados a partir do console.
Métodos do Scanner:
nextLine()
: lê uma linha completa.next()
: lê uma palavra até o primeiro espaço em branco.nextInt()
,nextDouble()
,nextFloat()
, etc.: capturam diferentes tipos de valores numéricos.
📝 Exercícios
Tarefa 1: Saída no Console
Leia o código abaixo e tente prever a saída antes de executá-lo.
System.out.print("Java ");
System.out.println("é incrível!");
System.out.print("Aprendendo ");
System.out.print("formatar ");
System.out.println("saída no console.");
System.out.println("Fim da execução.");
Pergunta: O que será impresso no console?
Resposta
Java é incrível! Aprendendo formatar saída no console. Fim da execução.
Tarefa 2: Formatação de Números
Temos as seguintes variáveis:
double value1 = 123.45333;
double value2 = 0.004321;
Como exibir o seguinte resultado no console?
Valor um: 123.45 Valor dois: 0.00
Resposta
double value1 = 123.45333;
double value2 = 0.004321;
System.out.printf("Valor um: %.2f \n", value1);
System.out.printf("Valor dois: %.2f \n", value2);
Tarefa 3: Especificadores de formato
Temos as seguintes variáveis:
int number = 255;
double decimal = 3.14159;
char letter = 'A';
String text = "Java";
Como exibir essas variáveis no console com os seguintes formatos usando os especificadores de formato?
Número inteiro: 255 Número decimal: 3.14 Caractere: A Texto: Java
Resposta
System.out.printf("Número inteiro: %d\n", number);
System.out.printf("Número decimal: %.2f\n", decimal);
System.out.printf("Caractere: %c\n", letter);
System.out.printf("Texto: %s\n", text);
%d
: exibe números inteiros%.2f
: exibe números de ponto flutuante%c
: exibe um caractere%s
: exibe uma string