Printf requer mudança do tipo de retorno dp metodo getSaldo() para Object[];
Printf requer mudança do tipo de retorno dp metodo getSaldo() para Object[];
Esequiel, o printf é apenas uma forma de imprimir, ele não requer alteração em tipo de retorno de métodos.
É o que o eclipse está dizendo.
Chage return type of "getSaldo()" to Object[]
Classe main está ssim:
package br.com.caelum.tests;
import br.com.caelum.entity.ContaCorrente;
import br.com.caelum.entity.ContaPoupanca;
public class TestaContas {
public static void main(String[] args) {
ContaCorrente contaCorrente = new ContaCorrente();
ContaPoupanca contaPoupanca = new ContaPoupanca();
contaCorrente.deposita(1000);
contaPoupanca.deposita(1000);
contaCorrente.atualiza(0.01);
contaPoupanca.atualiza(0.01);
System.out.println(contaCorrente.getSaldo());
System.out.println(contaPoupanca.getSaldo());
// linha do erro de compilação
System.out.printf("", contaPoupanca.getSaldo());
}
}
Fiquei curioso pra saber como estão as suas classes ContaCorrente e ContaPoupanca. Hehe
De qualquer forma, criei essas classes de forma bem simples (e não sei se as tuas estão iguais, mas serve de base para o entendimento).
Do jeito que está, funcionou perfeitamente. Ao que parece, o problema está no tipo de variável que você declarou "saldo" ou no método getSaldo().
O printf() tem essa assinatura:
System.out.printf(formato, dados de saída);
Os formatos possíveis são:
%s = String
%d = Inteiro
%f = número com ponto flutuante. Na verdade o "f" representa a vírgula. (Veja que utilizei %.2f para deixar com duas casas de precisão).
\t = tabulação
\n = salto de linha
Classes
public class TestaContas {
public static void main(String[] args) {
ContaCorrente contaCorrente = new ContaCorrente();
ContaPoupanca contaPoupanca = new ContaPoupanca();
contaCorrente.deposita(1000);
contaPoupanca.deposita(1000);
contaCorrente.atualiza(0.01);
contaPoupanca.atualiza(0.01);
System.out.println(contaCorrente.getSaldo());
System.out.println(contaPoupanca.getSaldo());
// linha do erro de compilação
System.out.printf("%.2f", contaPoupanca.getSaldo());
}
}
class ContaCorrente {
double saldo;
public double getSaldo() {
return this.saldo;
}
public void deposita(double valor) {
this.saldo += valor;
}
public void atualiza(double percentual) {
this.saldo += this.saldo * percentual;
}
}
class ContaPoupanca {
double saldo;
public double getSaldo() {
return this.saldo;
}
public void deposita(double valor) {
this.saldo += valor;
}
public void atualiza(double percentual) {
this.saldo += this.saldo * percentual;
}
}
Testa aí e dá um retorno.
Seu problema provavelmente deve ser o mesmo que o meu, estar usando um java compiler 1.4 ou inferior, clique no seu projeto com o botão direito, vá em Build path. Procure a opção java compiler nas abas e mude para o 1.7
Estava com o mesmo problema e consegui resolver conforme o João Paulo disse. /\