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.
Repetição e números aleatórios
Seção intitulada “Repetição e números aleatórios”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.
Parte 1: Reforçando repetições
Seção intitulada “Parte 1: Reforçando repetiçõ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.
Repetição com for
Seção intitulada “Repetição com for”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++).
Repetição com while
Seção intitulada “Repetição com while”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}Parte 2: Números aleatórios com Random
Seção intitulada “Parte 2: Números aleatórios com Random”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 classeRandompara o programa.new Random()cria o gerador de números aleatórios.gerador.nextInt(6)sorteia um número de0a5.- somando
1, obtemos um número de1a6.
Outros sorteios
Seção intitulada “Outros sorteios”| Comando | O que gera |
|---|---|
gerador.nextInt(10) | Inteiro de 0 a 9 |
gerador.nextInt(10) + 1 | Inteiro 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(), masRandomdeixa a intenção mais clara.
Parte 3: Juntando os dois
Seção intitulada “Parte 3: Juntando os dois”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
Randomsorteia o número secreto; - o
whilerepete enquanto o palpite estiver errado; - o
if/else if/elsedá 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);}Erros comuns
Seção intitulada “Erros comuns”- Esquecer de atualizar o valor dentro do
whilee criar uma repetição infinita. - Usar
nextInt(6)esperando o resultado de1a6(na verdade, sai de0a5). - Esquecer o
import java.util.Random;no início do arquivo.