Ajuda em um exercicio de laço (For...)

Bom dia.

Estou tentando executar uma lógica para imprimir no console, uma lista de nr de apartamentos.
No exercicio, o apartamento tem 10 andares, 2 apto por andar e sua numeração deve começar com 101.
A resposta seria:

101, 102
201,202
301,302

Porém estou errando feio e aparece só 101,101,101… , por favor, poderiam me ajudar nesse problema:
Meu código:

import java.util.ArrayList;
import java.util.List;

/*
 * To change this license header, choose License Headers in Project Properties.
 * To change this template file, choose Tools | Templates
 * and open the template in the editor.
 */

/**
 *
 * @author gtalkSP
 */
public class ImprimeListaApto{

    /**
     * @param args the command line arguments
     */
    public static void main(String[] args) {
        // TODO code application logic here
        Integer nrApto = 100;
        Integer andares = 10;
        Integer aptoPorAndar = 2;
       List lista = new ArrayList();
        
        for (int i = 1; i < andares; i++) {
            for (int j = 1; j < aptoPorAndar; j++) {
                Integer zz = nrApto + j;
                lista.add(zz);
               for(int l = 0; l < lista.size(); l++ ){
                   System.out.println("Apto nr: "+lista.get(l));
               }

            }
        }
    }
    
}

Oi @gtalkSP !

Primeiramente, repare no seguinte:

for (int j = 1; j < aptoPorAndar; j++) {`

Repare que nesta linha, tu vai de 1 até um valor < que 2, ou seja, entra no laço somente uma vez. Isso porque:
Na primeira iteração j vai valer 1. 1 é menor que 2? Sim, então vai entrar.
Na segunda iteração j vai valer 2. 2 é menor que 2? Não, então não vai entrar.

Ou seja, isso vai gerar sempre o número do apartamento com final 1. Para resolver isso, pasta escrever:

for (int j = 1; j <= aptoPorAndar; j++) {

Além disso, pensa comigo: falta uma coisa para que o número fique correspondente ao andar, certo? Pois assim está ficando sempre com o número 100. Para resolver isso, tu tem que incrementar o valor da variável nrApto. No final do primeiro for (que vai de 1 até menor que a variável andares) tu pode escrever o seguinte:

nrApto += 100;

Assim, para cada iteração que representa o andar, será gerado o valor correspondente ao andar. Por exemplo:
Na primeira iteração vai valer 100. Gerará 101 e 102. Ao fim dela, adiciona 100.
Na segunda iteração vai valer 200. Gerará 201 e 202. Ao fim dela, adiciona 100.

E assim por diante!

1 curtida

Excelente, aprendi muito. Obrigado. Bom ano novo!!!

1 curtida