5
respostas

Printf requer mudança do tipo de retorno do metodo getSaldo()

Printf requer mudança do tipo de retorno dp metodo getSaldo() para Object[];

5 respostas

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. /\