Exemplo do Deitel com problema?

9 respostas
M

Pessoal,

Estou aprendendo Java utilizando o livro do Deitel, mas me deparei com a seguinte duvida:

No exercicio fig02_15, ele coloca para a impressao a seguinte linha:

if ( number1 == number2 )

System.out.printf( %d == %d\n, number1, number2 );

Meu compilador Eclipse mostra a seguinte mensagem de erro:

The method printf(String, Object[]) in the type PrintStream is not applicable for the arguments (String, int, int)

Pelo que eu entendi, estou tentando imprimir utilizando os argumentos errados para o printf.

A pergunta que eu tenho é, o livro do Deitel 6 Edicao, esta apresentando um exemplo errado ou eu que estou fazendo algo errado.

Valeu pela ajuda Pessoal.

9 Respostas

M

Eu mesmo tenho e adoro o Deitel, mas quando se copia um exemplo dele para compilar se encontram vários erros. Essa sintaxe do System.out.printf é parecida com a sintaxe do printf do C, dá uma olhadinha na API do Java para conferir se é essa mesmo.

Eu particularmente uso o System.out.println, que é sobrecarregado para receber vários tipos de argumentos. Assim sendo, eu escreveria assim:

if (number1 == number2)
System.out.println(number1+"=="+number2);

Nem precisa daquele malabarismo todo. O ‘+’ significa concatenação de String e o number1 e number2 são convertidos para String mesmo sendo int,float,double, etc.

Espero que tenha esclarecido.

ramilani12

Engraçado o meu eclipse não acusou o erro, rodei e saida foi:
Qual a versão do seu JAVA ?

1 == 1
public class NumberTest 
{
	public static void main(String args[])
	{
		int number1=1,number2=1;
		
		if (number1 == number2)
			System.out.printf( "%d == %d\n",number1,number2); 
			
	}
	 
}
M

Eclipse SDK

Version: 3.1.2

Qual vc esta usando ?

peczenyj

seria algo assim?

https://bugs.eclipse.org/bugs/show_bug.cgi?id=122186

ramilani12

A mesma versão que vc , jsdk1.5.0_06

Mr. E:
Eclipse SDK

Version: 3.1.2

Qual vc esta usando ?

ramilani12

Veja os comentários deste bug , para usar este método vc deve mudar o JDK Compliance p/ 5.0

clica em propriedades do seu projeto -> Java Compiler -> JDK Compliance

peczenyj:
seria algo assim?

https://bugs.eclipse.org/bugs/show_bug.cgi?id=122186

Matheus_Tardivo

Mr. E,

No Eclipse, faça o seguinte:
Clique em Window -> Preferences… -> Java -> Compiler
Em “JDK Compliance” e “Compiler compliance level:” mude para 5.0

davidbuzatto

march:
Eu mesmo tenho e adoro o Deitel, mas quando se copia um exemplo dele para compilar se encontram vários erros. Essa sintaxe do System.out.printf é parecida com a sintaxe do printf do C, dá uma olhadinha na API do Java para conferir se é essa mesmo.

Eu particularmente uso o System.out.println, que é sobrecarregado para receber vários tipos de argumentos. Assim sendo, eu escreveria assim:

if (number1 == number2)
System.out.println(number1+"=="+number2);

Nem precisa daquele malabarismo todo. O ‘+’ significa concatenação de String e o number1 e number2 são convertidos para String mesmo sendo int,float,double, etc.

Espero que tenha esclarecido.

Eu copiei TODOS os exemplos de código do Java Como Programar 4 e 6 e nunca tive nenhum problema.

M

Valeu pessoal,

Mudei para 5.0 e o problema foi sanado.

Criado 19 de junho de 2006
Ultima resposta 19 de jun. de 2006
Respostas 9
Participantes 6