Pular para o conteúdo

Repetição

Neste tópico, vamos reforçar as estruturas de repetição em Java e conhecer os números aleatórios com a classe Random. Os dois assuntos se combinam porque, muitas vezes, queremos repetir uma ação várias vezes e, a cada repetição, gerar um valor diferente.

Uma repetição permite executar o mesmo bloco várias vezes. Já a classe Random permite sortear valores. Juntas, elas aparecem em jogos, sorteios e simulações.

Usamos repetições quando um bloco de código precisa rodar mais de uma vez. Em Java, as duas estruturas mais usadas são o for e o while.

O for é ideal quando sabemos quantas vezes a repetição vai acontecer.

for (int i = 0; i < 5; i++) {
System.out.println("Volta número " + i);
}

O for reúne três informações em uma linha:

  • onde o contador começa (int i = 0);
  • até quando ele continua (i < 5);
  • como ele muda a cada volta (i++).

O while é melhor quando a repetição depende de uma condição que pode mudar.

int vida = 100;
while (vida > 0) {
// continua enquanto a vida for maior que 0
}

Até agora, todos os valores dos nossos programas vinham do usuário ou de cálculos. Com a classe Random, podemos gerar valores sorteados.

import java.util.Random;
public class Main {
public static void main(String[] args) {
Random gerador = new Random();
int dado = gerador.nextInt(6) + 1;
System.out.println("Você rolou o dado e tirou: " + dado);
}
}

Vamos entender cada parte:

  • import java.util.Random; traz a classe Random para o programa.
  • new Random() cria o gerador de números aleatórios.
  • gerador.nextInt(6) sorteia um número de 0 a 5.
  • somando 1, obtemos um número de 1 a 6.
ComandoO que gera
gerador.nextInt(10)Inteiro de 0 a 9
gerador.nextInt(10) + 1Inteiro de 1 a 10
gerador.nextDouble()Número real entre 0.0 e 1.0
gerador.nextBoolean()true ou false

💡 Também é possível sortear com Math.random(), mas Random deixa a intenção mais clara.

Um uso clássico é sortear um valor e repetir até acontecer algo. É exatamente assim que funciona um jogo de adivinhação.

import java.util.Random;
import java.util.Scanner;
public class Main {
public static void main(String[] args) {
Scanner scanner = new Scanner(System.in);
Random gerador = new Random();
int secreto = gerador.nextInt(100) + 1;
int tentativas = 0;
int palpite = 0;
while (palpite != secreto) {
System.out.print("Digite um palpite: ");
palpite = scanner.nextInt();
tentativas = tentativas + 1;
if (palpite < secreto) {
System.out.println("O número secreto é maior.");
} else if (palpite > secreto) {
System.out.println("O número secreto é menor.");
} else {
System.out.println("Você acertou em " + tentativas + " tentativa(s)!");
}
}
scanner.close();
}
}

Nesse exemplo:

  • o Random sorteia o número secreto;
  • o while repete enquanto o palpite estiver errado;
  • o if/else if/else dá as dicas e identifica o acerto;
  • uma variável conta as tentativas.

Um segundo uso comum: repetir um sorteio várias vezes, como rolar um dado em cada rodada.

Random gerador = new Random();
for (int rodada = 1; rodada <= 5; rodada++) {
int dado = gerador.nextInt(6) + 1;
System.out.println("Rodada " + rodada + ": " + dado);
}
  • Esquecer de atualizar o valor dentro do while e criar uma repetição infinita.
  • Usar nextInt(6) esperando o resultado de 1 a 6 (na verdade, sai de 0 a 5).
  • Esquecer o import java.util.Random; no início do arquivo.