Clique sobre os tópicos listados abaixo para navegar até o conteúdo desejado.

  1. Introdução Entrada e saída de dados
  2. Entender a saída de dados
  3. Entender a formatação de precisão
  4. Entender a formatação a quantidade de caracteres de uma string
  5. Entender a formatação de alinhamento
  6. Entender a entrada de dados
  7. Aprender a truncar casas decimais
  8. formatação: boolean, char número, float/double

Para a exibição de informações na saída padrão, Java fornece os métodos println, print e printf da classe System.out. O printf possui características semelhantes à função de mesmo nome presente na linguagem C/C++.

Também vamos estudar os métodos básicos da classe Scanner para interação com usuário na captura de valores de diferentes formatos.

Mais formas de formatação além das mostradas aqui podem ser vistas em Java Básico: Formatação de dados.

A saída de dados na linguagem Java para exibição básica de informações para os usuários de nossos programas na saída padrão. Isso é feito com a ajuda da classe System.out.

Sintaxe
System.out.print(/*argumento*/);
System.out.println(/*argumento*/);

O método print exibe informações sem quebra de linha, enquanto o método println exibe uma quebra de linha após a exibição do argumento.

Exemplo 1
import java.io.Console;

public class Main
{
    public static void main(String[] args) 
    {
        int a = 999;
        float f = 7.77f;
        char ch = 'Z';
        boolean bl = false;
        String str = "Uma string com cafeina";
        
        System.out.println(str);
        System.out.print(a);
        System.out.println(f);
        System.out.print(ch);
        System.out.println(bl);
    }
}
Saída
Uma string com cafeina
9997.77
Zfalse

Uma forma de formatar a saída de dados na linguagem Java é utilizando o método printf, que se assemelha a função printf da linguagem C, que permite uma formação utilizando os identificadores de formatação além dos caracteres de escape.

Sintaxe

System.out.printf(string);
System.out.printf(format, arguments);
System.out.printf(locale, format, arguments);
Onde
format: string contendo os identificadores de formatação
arguments: valores que serão exibidos utilizando format
Tab .1: Identificadores
Especificador Dado impresso
%s string
%d decimal base 10
%f float
%e float com notação exponencial
%c char
%u inteiro não sinalizado
%o octal
%x ou %X int hexadecimal
%i inteiro base 10
%% Símbolo %
Tab 2.: Escape
Caracter Descrição
\n Nova Linha
\' Apóstrofe
\" Aspas duplas
\\ Contrabarra
\t Tabulação horizontal
\a Alerta sonoro
\? Interrogação
\v Tabulação vertical
Exemplo 2
import java.io.Console;

public class Main
{
    public static void main(String[] args) 
    {
        int a = 999;
        float f = 7.77f;
        char ch = 'Z';
        String str = "CAFEBABE";
        
        System.out.printf("int:%d oct:%o hex:%x float:%f string:%s char:%c \n",a,a,a,f,str,ch);
    }
}
Saída
int:999 oct:1747 hex:3e7 float:7.770000 string:CAFEBABE char:Z 

Os valores que utilizem tipo de dado ponto flutuante podem ter ser digitos controlados para exibição de acordo com a sintaxe abaixo:

Sintaxe
%.n
Onde
n: número de dígitos de precisão para exibição
Exemplo 3
import java.io.Console;

public class Main
{
    public static void main(String[] args) 
    {       
        System.out.printf("%.3f", 1.234f);
    }
}
Saída
1.23

As strings podem ter suas quantidades de caracteres exibidas na sáida padrão de forma controlada utilizando a sintaxe abaixo:

Sintaxe
%.Ns
Onde
N: número de caracteres para exibição
s: formatador de string
Exemplo 4
import java.io.Console;

public class Main
{
    public static void main(String[] args) 
    {
        System.out.printf("%.4s", "CAFEBABE");
    }
}
Saída
CAFE

O alinhamento de dados pode ser feito utilizando as informações de tamanho de campo e alinhamento à esquerda ou direita.

Sintaxe
%[-]Nidentificador
Onde
-: alinhamento à esquerda. Se não usado, o alinha se torna a direita.
N: tamanho do campo onde o valor será alinhado
identificador: identificador de formatação
Exemplo 5
public class Main
{
    public static void main(String[] args) 
    {
        //alinhamento a direita
        System.out.printf("string:|%8s|\n", "CAFE");
        
        //alinhamento a  esquerda
        System.out.printf("string:|%-8s|\n", "CAFE");
        
        //alinhamento int
        System.out.printf("int:|%-8d|\n", 100);
        System.out.printf("int:|%8d|\n", 100);

    }
}
Saída
string:|    CAFE|
string:|CAFE    |
int:|100     |
int:|     100|

A entrada de dados em Java pode ser feita utilizando a classe System.int e Scanner. Com essa classe conseguimos ler dados inteiros, texto e ponto-flutuante, digitados pelos usuários de nossos programas.

Sintaxe
Scanner nome_variavel = new Scanner(System.in);

Para a utilização dessa classe Scanner é necessário a importação do package java.util.

Sintaxe
import java.util.Scanner;
Exemplo 6
import java.util.Scanner;

public class Main
{
    public static void main(String[] args) 
    {
        Scanner sc = new Scanner(System.in);
        //omitido
    }
}

Para a leitura de dados numéricos, booleanos, string e outros, a classe Scanner disponibiliza os métodos básicos abaixo:

Tab. 3: Métodos Scanner
Metodo Leitura de dado
nextBoolean booleano
nextByte Byte
nextDouble Double
nextFloat Float
nextInt Interger
nextLine String
nextLong Long int

Abaixo, um exemplo básico contendo a leitura de dados utilizando cada método listados na tabela 3 acima. Dependendo do tipo de dado, será necessário a utilização de outros recursos da linguagem para tratamento.

Exemplo 7
public class Main
{
    public static void main(String[] args) 
    {
        Scanner sc = new Scanner(System.in);
        
        boolean v1 = sc.nextBoolean();
        System.out.println("Valor digitado: " + v1);
        
        Byte v2 = sc.nextByte();
        System.out.println("Valor digitado: " + v2);

        Double v3 = sc.nextDouble();
        System.out.println("Valor digitado: " + v3);

        float v4 = sc.nextFloat();
        System.out.println("Valor digitado: " + v4);

        int v5 = sc.nextInt();
        System.out.println("Valor digitado: " + v5);
        
        String v6 = sc.nextLine();
        System.out.println("Valor digitado: " + v6);
    }
}
Saída
false
Valor digitado: false
10
Valor digitado: 10
1.99
Valor digitado: 1.99
1.99
Valor digitado: 1.99
256
Valor digitado: 256
Valor digitado: 
uma string

  1. 23/09/2024 - revisão 2 - Remoção: 'print/f/ln não aceita formatação'; correção em objetivos; ajustes gramaticais pontuais
  2. 06/02/2024 - revisão 1 - correção em navegação e erros gramaticais
  3. 04/09/2023 - versão inicial