Dúvida programa para informar a quantidade de dígitos

É meu primeiro post aqui e sou iniciante em Java.

Segue o código:

public static void main(String[] args) {
        Scanner teclado = new Scanner(System.in);
        int n, aux, total = 0;
        
        System.out.print("N: ");
        n = teclado.nextInt();
        
        aux = n; 
        do {
            aux /= 10; 
            total++;
        } while (aux > 0);
        
        System.out.println(n + " tem " + total + " digitos");
    }
}

Não entendi a lógica desse código, por exemplo, se eu digitar 30 o aux recebera 30 e dentro do while será 30/10 que será 3 e o total recebera 1, ou seja, a resposta não seria 30 tem 1 dígitos"?

Mas 30 tem 2 digitos, o 3 e o 0. :santa: :stuck_out_tongue_closed_eyes:

Como você está lidando com números inteiros ele pega a parte inteira da divisão.

  1. 30/10 = 3 (+1 digito)
  2. 3/10 = 0.3 (+1 digito)
  3. Agora ele vai verificar (aux > 0) ?
    Agora aux não é maior que 0 pois ele pega o 0 do 0.3, portanto 2 digitos.

Muito obrigado cara! De primeira não entendi, mas agora entendi, brigadão!