Dúvida no printf

Pessoal tava fazendo um exemplo aqui porém tá dando erro:

public class GradeBook{
	    
    /** Creates a new instance of GradeBook */
    public GradeBook() {
    }
    
    public void mensagem(String nome){
        System.out.printf("Bem vindo para o curso de \n%s\n",nome);
    }//termina o medotodo display
	    
	    
}

No caso o segundo parâmetro do metodo printf é uma String e String num é um objeto??

Tá dando erro justamente aí,se alguém puder me auxiliar!!
Valew!!!

é println() e não printf()!

Cara,

Você misturou Java com C

Saca só:
Em JAVA no lugar de printf usa-se println…

e na hora de concatenar Strings e objetos usa-se o operador + para fazê-lo:

Exemplo:
Subistitua seu código:

System.out.printf("Bem vindo para o curso de \n%s\n",nome);

por:

System.out.println("Bem vindo para o curso de " + nome);

Boa Sorte…

Amigo matheus e feliperod,esqueci de comentar que o printf é do java 5.0, é um novo recurso para exibir dados formatados!!!

valew Aê!!

cara… pode usar sim (no java 5) no printf

e o teu codigo funcionou aqui na minha maquina

qual erro esta dando?

Galera, no tiger nós temos printf sim.

Mas no caso dele acho que está querendo usar o println mesmo…

A Paz!!

O erro que está acontecendo é esse:

Exception in thread "main" java.lang.Error: Unresolved compilation problem: The method printf(String, Object[]) in the type PrintStream is not applicable for the arguments (String, String)

Usei String,no caso String não seria objeto??

[quote=“TRICOLACO”]O erro que está acontecendo é esse:

Exception in thread "main" java.lang.Error: Unresolved compilation problem: The method printf(String, Object[]) in the type PrintStream is not applicable for the arguments (String, String)

Usei String,no caso String não seria objeto??[/quote]

Olá. Então experimente:

System.out.printf(
“Bem vindo para o curso de \n%s\n”,new Object[]{nome});

Iktuz,deu certo…

valew pela ajuda!!!

[code]public class GradeBook{

/** Creates a new instance of GradeBook */
public GradeBook() {
}

public void mensagem(String nome){
    System.out.printf("\n%s\n",new Object[]{nome});
}//termina o medotodo mensagem

}
[/code]

Mas vem aqui,num tem um jeito mais fácil não?? :wink:

Humm,entendi agora…

[code]public class GradeBook{

/** Creates a new instance of GradeBook */
public GradeBook() {
}

public void mensagem(String nome,String nome2){
    System.out.printf("\n%s\n",new Object[]{nome,nome2});
}//termina o medotodo display

}[/code]

Valew pela dica iktuz!!

Jeito mais facil é usar o tradicional println mesmo!!! :lol: :lol:

[quote=“TRICOLACO”]Amigo matheus e feliperod,esqueci de comentar que o printf é do java 5.0, é um novo recurso para exibir dados formatados!!!

valew Aê!![/quote]
:tapas:

Aqui no meu PC esse mesmo código funcionou… mostrou certinho. E era de se esperar.

No definição do método printf, o cabeçalho tem:

public PrintStream printf(String format, Object... args)

As reticências depois d Object utiliza o novo recurso do Java 5, varargs (soh da uma googlada q vcs acham assunto sobre isso). Esse novo recurso deixa você escolher, nos casos com essas reticências, se quer usar objeto ou array de objetos. Leiam o link da Sun (o primeiro resultado no google), lá explica bem melhor que eu! :smiley: O que eu quis dizer é que o código postado funciona, e era pra funcionar mesmo.

Até mais,

Caraca…

printf no Java é nova pra mim… E olha que eu uso o Java 5.0 hein…

Depois dessa discussão eu entrei no auto-complete do eclipse e vi que realmente o printf faz parte do java 5.0

Mas como o mais comum e mais produtivo é usar o println, eu nunca tinha reparado.

Alguém sabe o motivo pelo qual foi incluso o printf no java?