1
resposta

[Dúvida] Saída do metódo para somar o tempo incorreta

Na saída do meu método "inclui" na nova classe criada "somaTempoTitulos", quando eu somo uma série ele retorna o valor da variável duracaoemMinutos ao invés de retornar o valor do cálculo feito pelo método calculaDuracao() descrito no return. Como faço para quando chamar o método inclui.somaTempoTitulos e passar o parâmentro "Série1" ele me retornar o valor do return ao invés do valor da variável "crua"?

Classe principal: 

package heranca_alura;
import javax.swing.*;

public class Principal {


    public static void main(String[] args) {

        int nTemps=0,nEps=0;
        int i, nTelespectadores;

        String verificaNome;

       Serie Serie1 = new Serie();
       Filme Filme1 = new Filme();
       somaTempoTitulos somar = new somaTempoTitulos();

       verificaNome = JOptionPane.showInputDialog("Insira o nome da série: ");

       Serie1.setNome(verificaNome);
       Serie1.duracaoemMinutos = Integer.parseInt(JOptionPane.showInputDialog("Insira a duração do Ep. em minutos: "));


       Serie1.setnTemporadas(Integer.parseInt(JOptionPane.showInputDialog("Insira o numero de temporadas: ")));
       Serie1.setnEpisodios(Integer.parseInt(JOptionPane.showInputDialog("Insira o numero de eps por temporada: ")));

       Filme Filme2 = new Filme();


       Filme1.duracaoemMinutos = 1000;
       Filme2.duracaoemMinutos = 1050;
       somar.inclui(Filme1);
       somar.inclui(Filme2);
       somar.inclui(Serie1);

       nTelespectadores = Integer.parseInt(JOptionPane.showInputDialog("Insira quantas pessoas viram a série: "));
       double armazenaNotas[] = new double[nTelespectadores];
       for(i=0; i < nTelespectadores; i++){
           armazenaNotas[i] = Double.parseDouble(JOptionPane.showInputDialog("Insira a  nota da "+(i+1)+"ª pessoa que viu a série " + Serie1.getNome() + " (entre 0 e 5 estrelas): "));
           if(armazenaNotas[i] >= 0 && armazenaNotas[i] <= 5){
           Serie1.somaNotas(armazenaNotas[i]);
           }
           else{
               System.out.println("Insira uma nota válida de 0 a 5");
           }

       };

       System.out.println("A média das avaliações do filme é de: "+Serie1.mediaNotas()+" estrelas.");
       System.out.println("A duração para maratonar é de "+Serie1.calculaDuracao()+" minutos ou "+Serie1.minutosParaHora()+" horas.");
       System.out.println("O tempo total para maratonar todos os titulos listados é de "+somar.getSomaTempo()+" minutos");

       };


}


Classe somaTempoTitulos:

package heranca_alura;

public class somaTempoTitulos {

    private int somaTempo;

    void inclui(Titulos t){
        somaTempo += t.getDuracaoemMinutos();

    };

    public int getSomaTempo() {
        return somaTempo;
    }


}
1 resposta

Olá Pedro! Pelo que entendi, você está tendo problemas com a saída do método "inclui" na classe "somaTempoTitulos". Na verdade, o método "inclui" está somando a duração em minutos do título passado como parâmetro na linha "somaTempo += t.getDuracaoemMinutos();". Para que ele retorne o valor do cálculo feito pelo método "calculaDuracao()" da classe "Serie", você precisa chamar esse método dentro do método "inclui" da classe "somaTempoTitulos". Ficaria assim:

void inclui(Titulos t){
    somaTempo += t.calculaDuracao();
};

Dessa forma, quando você chamar o método "inclui.somaTempoTitulos" e passar o parâmetro "Série1", ele irá retornar o valor do cálculo feito pelo método "calculaDuracao()" da classe "Serie". Espero ter ajudado e bons estudos!