[RESOLVIDO] Erro no printf

Eu comecei a usar agora o eclipse e tenho que fazer um código usando saídas simples, só com println e printf mesmo, só que na hora de usar o printf sempre da erro. O estranho é que copiei o código pro Netbeans e funcionou perfeitamente. Só no eclipse que da erro mesmo. Já revisei o código todo e não consigo achar erro algum.

    String product1 = "Computer";
	String product2 = "Office desk";
	
	byte age = 30;
	int code = 5290;
	char gender = 'F';
	
	double price1 = 2100.0;
	double price2 = 650.50;
	double measure = 53.234567;
	
	System.out.println("Products:");
	System.out.printf("%s, which price is $ %.2f%n", product1, price1);
	System.out.printf("%s, which price is $ %.2f%n", product2, price2);
	System.out.println();
	System.out.printf("Record: %d years old, code %d and gender: %c%n", age, code, gender);
	System.out.println();
	System.out.printf("Measure with eight decimal places: %.8f%n", measure);
	System.out.printf("Rouded (three decimal places): %.3f%n", measure);
	Locale.setDefault(Locale.US);
	System.out.printf("US decimal point: %.3f%n", measure);
1 curtida

Qual erro?

Recomendo dar uma olhada em System.out.format("", var);
Ex:
System.out.format("Sr(a). %s", nome);

https://docs.oracle.com/javase/10/docs/api/java/util/Formatter.html#syntax

1 curtida

Exception in thread “main” java.lang.Error: Unresolved compilation problems:
The method printf(String, Object[]) in the type PrintStream is not applicable for the arguments (String, String, double)
The method printf(String, Object[]) in the type PrintStream is not applicable for the arguments (String, String, double)
The method printf(String, Object[]) in the type PrintStream is not applicable for the arguments (String, byte, int, char)
The method printf(String, Object[]) in the type PrintStream is not applicable for the arguments (String, double)
The method printf(String, Object[]) in the type PrintStream is not applicable for the arguments (String, double)
The method printf(String, Object[]) in the type PrintStream is not applicable for the arguments (String, double)

at course.Program.main(Program.java:24)

Tentei desse jeito e retorna o mesmo erro

O uso da função System.out.printf é um pouco diferente. Eis a sintaxe e sua utilização correta:

System.out.printf( formato, dados de saída)
Formato obviamente descreve a saída, a saída são separadas por vírgula.
Os formatos sempre começam com “%”, e como eu disse a saída são separadas por vírgulas.

Repare que você a utiliza assim:
System.out.printf("Measure with eight decimal places: %.8f%n", measure);

O correto seria:

 System.out.printf("\t%s%.8f", "Measure with eight decimal places", measure);

Obs: Você pode formatar o código acrescentando caracteres de escape:
\t = tabulação
\n = salto de linha

Opte por usar outras funções de impressão como a System.out.println() que é mais simples e fácil de usar;

Espero ter ajudado!

Mesmo colocando a formatação assim, ainda dá erro.
O estranho é que esse erro acontece só no Eclipse, no Netbeans roda perfeitamente. Será que o problema não é com o Eclipse?
Eu utilizo o Eclipse Photon 3.8, o professor do curso que estou fazendo, que deu esse exercício, utiliza o Eclipse Luna, com o código exatamente como o que eu postei aqui e no dele roda sem erros.

O erro pode ser no Compliance Level do seu projeto no Eclipse.
Para isso, clique com botão direito do mouse em cima do pacote do teu projeto -> Properties->Java Compiler. A partir daí, desmarque a caixa "Use compliance… "
Em “Compiler compliance level” seleciona na combo a versão 1.6 ou posterior.

Tem uma explicação muito boa sobre o Compliance Leve do Eclipse aqui: Stackoverflow - what-is-compiler-compliance-level-in-eclipse

Provavelmente vai resolver! :slight_smile:

3 curtidas

Funcionou certinho, muito obrigada!

1 curtida

Obrigado funcionou aqui tambem, Sucesso

1 curtida