Loops
Loops permitem que programas repitam certas operações. Esta lição cobre as estruturas de loop em Java.
Loop for
O loop for é a estrutura de loop mais comumente usada, ideal quando o número de iterações é conhecido.
Sintaxe
for (inicialização; condição; atualização) {
// Corpo do loop
}
Exemplo: Imprimir 1 a 10
public class ForDemo {
public static void main(String[] args) {
for (int i = 1; i <= 10; i++) {
System.out.println(i);
}
}
}
Fluxo de Execução
1. Executar inicialização (int i = 1)
2. Verificar condição (i <= 10)
3. Se condição for verdadeira, executar corpo do loop
4. Executar atualização (i++)
5. Voltar ao passo 2
Exemplo: Soma de 1 a 100
public class SumDemo {
public static void main(String[] args) {
int sum = 0;
for (int i = 1; i <= 100; i++) {
sum += i;
}
System.out.println("Soma de 1 a 100: " + sum); // 5050
}
}
Loop while
O loop while é ideal quando o número de iterações é desconhecido.
Sintaxe
while (condição) {
// Corpo do loop
}
Exemplo: Jogo de Adivinhação de Números
import java.util.Scanner;
import java.util.Random;
public class GuessGame {
public static void main(String[] args) {
Random random = new Random();
int target = random.nextInt(100) + 1;
Scanner scanner = new Scanner(System.in);
int guess = 0;
System.out.println("Jogo de Adivinhação de Números (1-100)");
while (guess != target) {
System.out.print("Digite seu palpite: ");
guess = scanner.nextInt();
if (guess > target) {
System.out.println("Muito alto!");
} else if (guess < target) {
System.out.println("Muito baixo!");
} else {
System.out.println("Parabéns! Você acertou!");
}
}
scanner.close();
}
}
Loop do-while
O loop do-while executa o corpo do loop pelo menos uma vez.
Sintaxe
do {
// Corpo do loop
} while (condição);
Exemplo: Loop de Menu
import java.util.Scanner;
public class MenuDemo {
public static void main(String[] args) {
Scanner scanner = new Scanner(System.in);
int choice;
do {
System.out.println("\n=== Menu Principal ===");
System.out.println("1. Iniciar Jogo");
System.out.println("2. Configurações");
System.out.println("3. Sair");
System.out.print("Digite sua escolha: ");
choice = scanner.nextInt();
switch (choice) {
case 1:
System.out.println("Iniciando jogo...");
break;
case 2:
System.out.println("Abrindo configurações...");
break;
case 3:
System.out.println("Adeus!");
break;
default:
System.out.println("Escolha inválida");
}
} while (choice != 3);
scanner.close();
}
}
Loop for-each
O loop for-each é usado para iterar sobre arrays ou coleções.
Sintaxe
for (tipo variável : array ou coleção) {
// Usar variável
}
Exemplo: Iterando um Array
public class ForEachDemo {
public static void main(String[] args) {
int[] numbers = {1, 2, 3, 4, 5};
// Loop for regular
for (int i = 0; i < numbers.length; i++) {
System.out.println(numbers[i]);
}
// Loop for-each
for (int num : numbers) {
System.out.println(num);
}
}
}
break e continue
break: Sair do Loop
public class BreakDemo {
public static void main(String[] args) {
for (int i = 1; i <= 10; i++) {
if (i == 5) {
break; // Sair do loop quando i for igual a 5
}
System.out.println(i);
}
// Saída: 1 2 3 4
}
}
continue: Pular Iteração Atual
public class ContinueDemo {
public static void main(String[] args) {
for (int i = 1; i <= 10; i++) {
if (i % 2 == 0) {
continue; // Pular números pares
}
System.out.println(i);
}
// Saída: 1 3 5 7 9
}
}
Loops Aninhados
Loops podem ser aninhados uns dentro dos outros.
Exemplo: Tabuada de Multiplicação
public class MultiplicationTable {
public static void main(String[] args) {
for (int i = 1; i <= 9; i++) {
for (int j = 1; j <= i; j++) {
System.out.print(j + " × " + i + " = " + (i * j) + "\t");
}
System.out.println();
}
}
}
Saída:
1 × 1 = 1
1 × 2 = 2 2 × 2 = 4
1 × 3 = 3 2 × 3 = 6 3 × 3 = 9
...
Exemplo: Imprimir um Triângulo
public class TriangleDemo {
public static void main(String[] args) {
int rows = 5;
for (int i = 1; i <= rows; i++) {
// Imprimir espaços
for (int j = 1; j <= rows - i; j++) {
System.out.print(" ");
}
// Imprimir estrelas
for (int k = 1; k <= 2 * i - 1; k++) {
System.out.print("*");
}
System.out.println();
}
}
}
Saída:
*
***
*
***
*****
Loops Infinitos
Se a condição do loop for sempre verdadeira, um loop infinito é criado.
// Exemplo de loop infinito (não faça isso)
while (true) {
System.out.println("Loop infinito");
}
// Loop infinito correto (com condição de saída)
while (true) {
// Ler entrada do usuário
String input = scanner.nextLine();
if (input.equals("sair")) {
break; // Sair quando o usuário digitar "sair"
}
}
❓ Perguntas Frequentes
P: Como escolher entre for e while? R: Use for quando o número de iterações for conhecido. Use while quando for desconhecido. for é mais conciso, while é mais flexível.
P: Qual é a diferença entre break e return? R: break sai do loop atual. return sai de todo o método.
P: Como sair de múltiplos loops aninhados? R: Use break com rótulo.
outer: for(...) { for(...) { break outer; } }
📖 Resumo
- Loops for são para iterações conhecidas, loops while são para iterações desconhecidas
- do-while executa o corpo do loop pelo menos uma vez
- for-each é usado para iterar sobre arrays ou coleções
- break sai do loop, continue pula a iteração atual
- Loops podem ser aninhados; evite loops infinitos
📝 Exercícios
- Soma: Calcule a soma de todos os números ímpares de 1 a 100
- Fatorial: Calcule o fatorial de 10 (10! = 10 × 9 × ... × 1)
- Tabuada: Use loops aninhados para imprimir a tabuada de multiplicação completa
Próxima Lição
Na próxima lição, aprenderemos sobre Arrays — como armazenar e operar em um grupo de dados.



