Eu já sei a diferença sintática entre print, println e printf, mas QUANDO usá-los? Porque o texto simplesmente não aparece se eu digitar
public class xx{
public static void main (String args[]){
System.out.println(“Oi”);
}
}
Assim como apareceria se eu usasse um JOptionPane. Eu só queria saber porque usando qualquer uma destas print que eu falei o texto simplesmente não aparece e, então, quando posso e quando não posso usar.
Eu já sei o que diferencia cada um e sei a sintaxe de cada um, como você acabou de explicar aqui
O problema é que eu não sei o que está havendo… print, println e printf não são para janelas suspensas (igual JOptionPane)? É essa a minha dúvida! Qualquer coisa que eu escreva usando estes métodos, as mensagens simplesmente não aparecem. Isso acontece no código que passei antes, que eu usei como exemplo o println… a mensagem “Oi!” não aparece na tela e eu queria saber por que, pois parece que não tem nada de errado…
Janelas suspensas imprimem strings. Não tem nada a ver com o println, printf ou print.
Entretanto, há algumas formas de não perder os recursos:
Você pode usar o método String.format. Ele monta a String formatada, como se fosse o printf:
double num = 22.123456;
JOptionPane.showMessageDialog(null, String.format("%.2f", num));
Você pode usar a classe StringWriter, associada a um PrintWriter:
StringWriter str = new StringWriter();
PrintWriter out = new PrintWriter(str);
double num = 22.123456;
out.println("O número é:");
out.printf("%.2f", num);
JOptionPane.showMessageDialog(str.toString());
Note que no código acima o out escreve dentro do str. E no final, apenas enviamos a String do str pra a janela.
Esse processo é bastante útil para imprimir stacktraces:
catch (AlgumaException e) {
StringWriter str = new StringWriter();
PrintWriter out = new PrintWriter(str);
out.println("Erro! Exception gerada:");
e.printStackTrace(out);
JOptionPane.showMessageDialog(this, str.toString());
}