Sobre mensagens de texto!

Olá, pessoal

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.

Obrigado!

É o seguinte:

System.out.printf() é usado para imprimir formatos, melhor dizendo, imprimir valores formatados!

Exemplo:

double num = 22.123456;

System.out.printf("%.2f", num);

Saída gerada: 22.12

Se você fosse fazer isso com o println, ele faria assim:

double num = 22.123456;

System.out.println(num);

Saída gerada: 22.123456

E o println pula uma linha.

====================

Já ia esquecendo, o print faz o mesmo do println sem pular a linha!

Acho que você ainda não entendeu minha dúvida^^

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…

Elas imprimem o texto no próprio terminal/prompt onde são executadas. Se estiver executando de uma IDE, aparecem no console.

Aaah, obrigado ;]

Mas aqui, se eu exportar o arquivo jar do IDE, como fica? Onde apareceriam essas mensagens do print, println ou printf?

Continua aparecendo no terminal. Para ver as mensagens teria que executar o jar pelo terminal.

Obrigado pessoal :wink:

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:

  1. 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));
  1. 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()); }

[quote=RobertoAraujoMF]Acho que você ainda não entendeu minha dúvida^^
[/quote]

[quote=RobertoAraujoMF]Olá, pessoal

Eu já sei a diferença sintática entre print, println e printf, mas QUANDO usá-los?[/quote]

Bom, cara, então tente explicar direito a sua dúvida para não ocorrer de fazer os outros perderem tempo tentando explicar em vão.

Se você tivesse colocado algo como: “Imprimir na tela com janelas”, teria facilitado.