Solucionado (ver solução)
Solucionado
(ver solução)
9
respostas

Números alinhados no print

Olá, professor. Estou tentando interromper uma sequencia de numeros no print de 10 em 10, porem, na primeira linha eu queria adicionar zeros dos numeros de 1 a 9 para que todos os numeros fiquem alinhados. Fazendo uma pesquisa na internet encontrei isso: String with2digits = String.format("%02d", contador); , mas não funciona como eu gostaria. Vc poderia me ajudar? Obrigado.

package exercicios_Alura;

public class TestaWhile {
    public static void main(String[] args) {
        int contador = 1;
//        String with2digits = String.format("%02d", contador);
        int quebra = 0;
        while(contador <= 60) {

            System.out.print(contador + " ");

           // contador = contador + 1 ;
            ++contador;
            quebra++;
            if (quebra == 10) {
                System.out.println("");

                quebra = 0;



            }

        }
    }
}
9 respostas

Boa tarde Antonio!

Troca isso:

System.out.print(contador + " ");

Por isso:

System.out.print(with2digits + " ");

Se eu trocar o contador por with2digits, o contador não entrará no resultado, e só aparecerá a sequencia 01 01 01 01 01 01 ...

No entanto, um colega meu me ajudou a resolver da maneira "tabajara" mas funciona. Note que o que está comentado também funciona. Veja:

i    public static void main(String[] args) {
        int contador = 1;
//        String with2digits = String.format("%02d", contador);
        int quebra = 0;
        while(contador <= 100) {
            if (contador <10) {
            System.out.print("0" + contador + " ");       
            }
            else {
                System.out.print(contador + " ");    
            }
//            System.out.print(contador + " ");
//            String with2digits = String.format("%02d", contador);  
//            System.out.print(with2digits + " ");
           // contador = contador + 1 ;
            ++contador;
            quebra++;

            if (quebra == 10) {
                System.out.println("");

                quebra = 0;  

            }

        }
    }
}
nsira seu código aqui
solução!

Boa tarde Antonio!

Realmente, eu nem tinha percebido isso.

Testa assim:

public class Antonio {
    public static void main(String[] args) {
        int contador = 0;
        int quebra = 0;
        String with2digits;

        while (contador < 100) {
            contador++;
            with2digits = String.format("%02d", contador);
            System.out.print(with2digits + " ");

            quebra++;
            if (quebra == 10) {
                System.out.println("");
                quebra = 0;
            }
        }
    }
}

Olá Antonio, Essa resposta do Jonas acima está perfeita, quando você usa o String.format com "%02d" no primeiro argumento o java sempre tenta formatar os números decimais com duas casas, imagine que no seu while fosse até 200, aí teríamos que colocar "%03d" de modo que a String seja formatada com 3 dígitos.

Algo que vale a pena como exercício nesse caso seria tentar mudar a regra de quebra de linha utilizando múltiplos de 10, o código fica menor é um bom exercício de lógica.

Abs

Muito bom...

Fala Antonio, tranquilo?

Sua dúvida foi solucionada? :)

Obrigado a todos pela ajuda. Dúvida solucionada.

Disponha Antonio :)

Vou fechar o tópico!