Alguem poderia me ajudar com a logica desse algoritmo em java

Gostaria de escrever um algoritmo que tivesse essa saida:

1
2 3
4 5 6
7 8 9 10

a minha dificuldade está em como imprimir na linha apenas, 2, 3 e depois 4 números na linha.

Vejamos

Uma maneira simples é usar dois loops for.

Vejamos vc tem numeros de 1 a 10 em 4 linhas:

...
for(int i=1; i<= 10 ; i++){
    System.out.print("" + i + "  ");
    ...
    if ( condição ) {
        System.out.println();
         ...
     }
}

Agora, que condição é essa? Pois bem, vc pode criar duas variaveis:

Quantidade de numeros dentro da linha (vamos chamar de n)
Quantidade maxima de numeros na linha (vamos chamar de max)

Antes do loop, n é zero (vc não imprimiu nada). E max é 1 (primeira linha cabe só um né).

Dentro do loop vc vai incrementar n (depois do print, por exemplo.

Se n == max vc chegou no fim da linha. Vc vai:

Imprimir uma "quebra de linha"
Vai incrementar max
Vai zerar n

Isso deve garantir o correto desenho q vc quer.

É possível tambem usar dois loops for, um pra linha e outro pra imprimir as colunas.

int x=1;
for(int linha=1;linha<=4;linha++){
   for(int c=1;c<=linha;c++){
        // imprime x
        // incrementa x
    }
    // imprime nova linha 
}

Basta ver se atende ao q vc quer. Tem outras formas usando mais matematica, etc

1 curtida

Obrigado pela resposta eu consegui fazer esse exercício depois que entendi como funciona um for dentro do outro, eis meu codigo

public class EstrelaNumero {
    public static void main(String[] args) {
        
        int auxiliar = 0;
        int numero = 0;
        
        for(int i = 0; i < 4; i++){ 
            numero += 1; 
            System.out.println(numero);
            if (numero == 10){
                   break;
               }
            for(int j = 0; j <= i; j++){ 
                   auxiliar = numero +1;
                   System.out.print(auxiliar);
                   numero = auxiliar;
            }
        }
    }
}

nao entnedi pq vc colocou um break ai.