Printf requer mudança do tipo de retorno dp metodo getSaldo() para Object[];
Você está vendo a versão anterior da nova experiência da Alura que estamos preparando para você. Em breve, ela ganha uma identidade visual novinha totalmente pensada em potencializar seus estudos!
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. /\