4
respostas

Dúvida na exibição do descendingSet

Estou com o seguinte código:

        TreeSet<Integer> numeros = new TreeSet<>();

        for (int i = 1; i <= 1000; i++) {
            numeros.add(i);
        }

        //System.out.println(numeros.descendingSet());
        //System.out.println("\n");

        for (Integer i : numeros.descendingSet()) {
            System.out.println(i + " ");
        }
//(código igual ao do exercício)

Caso eu altere o println do foreach para print ele não exibe nada no console! O que pode ser?

4 respostas

Bom dia Hudson, você manteve exatamente o mesmo código só que :

System.out.printf(i + " ");

pois neste caso a saída será feita em uma linha só

Peguei o teu código, fiz a alteração de println para printf. Está imprimindo normal no console, como é de se esperar.

TreeSet<Integer> numeros = new TreeSet<>();

for (int i = 1; i <= 1000; i++)
    numeros.add(i);

for (Integer i : numeros.descendingSet())
    System.out.printf(i + " ");
}

Obs.: a principal vantagem do printf é quando se quer ter controle sobre o formato dos dados. Por exemplo, se sei que os valores variam de 1 a 1000, cada campo deve ter 4 dígitos de largura. Adicionalmente, quero que os dados sejam justificados à esquerda. Experimenta substituir a linha do printf por esta:

    System.out.printf("%-4d, ", i);

Se quiser que cada número seja impresso em uma nova linha:

    System.out.printf("%4d\n", i);

Foi mal galera, eu digite errado na pergunta! O que não funciona é o print, e não o printf

Mas a interface do System.out.print é idêntica a do System.out.println, a única diferença entre ambas é que a segunda adiciona um '\n' ao final do argumento. Não deveria ocorrer erro algum por comutar as funções.