Criando e chamando métodos

10 respostas
wilsontads

sei que, se quiser chamar um método do tipo void, em um main
basta eu por:

Nota teste; teste = new Nota(); teste.pegarValores();

mas, não consigo chamar um do tipo:

public double calculaMedia(double soma)
alguém pode me dar uma dica?..
desde já fico grato.

10 Respostas

T

double media = teste.calculaMedia(2.0);

wilsontads

na verdade… criei um método

public double pegarValores()

com

return (soma);

e iniciei o

public double calculaMedia(double soma)

com return (med);

se eu ponho o

double media = teste.calculaMedia(2.0);

não vou atingir meu objetivo, nesse caso

T

E qual é seu objetivo secreto? Se não explicar não vai alcançá-lo.

wilsontads
/* Faça um programa onde o usuário digite
 * 4 notas e o programa informe se ele esta:
 * aprovado: >= 7.0
 * exame: entre 3.0 e 7.0
 * reprovado: <3.0
criar os métodos
 * pegarValores();
 * calculaMedia();
 * Imprimeresultado();
 */

package OutrosExercicios;

import javax.swing.JOptionPane;

public class Nota {

    public double pegarValores() {
        double soma = 0;
        for (int cont = 1; cont <= 4; cont++) {
            String aux = JOptionPane.showInputDialog(null, "Entre com a " + cont + "ª nota");
            int calc = Integer.parseInt(aux);
            soma = soma + calc;
        }
        return (soma);
    }

    public double calculaMedia(double soma) {

        double med = soma / 4;
        {
        return (med);
        }
    }

    public double ImprimeResultado(double med) {
        double wil = med;
        if (wil >= 7) {
            JOptionPane.showMessageDialog(null, " Aluno aprovado");
        } else if (wil >= 3 && wil < 7) {
            JOptionPane.showMessageDialog(null, "Aluno com exame final");
        } else {
            JOptionPane.showMessageDialog(null, "Aluno reprovado");
        }
        return (wil);
    }
}

<<--------------------- Aqui termina a primeira classe ------------------------------->>

package OutrosExercicios;

public class Nota1 {

    String aux;

    public static void main(String[] args) {
        Nota teste;
        teste = new Nota();
        teste.pegarValores();
       teste.calculaMedia(soma);
       teste.ImprimeResultado(wil);
    }
}

<<-------------- Aqui estou tentando chamar os métodos --------------------------->>

O

Caramba brother, você colocou realmente um desafio. Não o seu exercício, mas te ajudar a arrumar seu código. Você poderia começar trocando o nome do pacote para OutrosExercícios, com acento.

Bricadeiras à parte, como o thingol mostrou, use no main uma variável pra pegar o retorno de seus métodos. Essa mesma variável mutante pode ser usada como argumento para o próximo método.
Não vou falar como seria correto de se escrever seu programa porque não sei se cabe aqui mostrar conceitos de OO.

wilsontads

me dêem um único exemplo. :lol:

Lavieri

que tal vc armazenar o que ta fazendo ??

public class Nota {   
    private double[] nota = new double[4];
    public void pegarValores() {
        for (int count = 0; count < nota.length; count++) {   
            String input = JOptionPane.showInputDialog(null, "Entre com a " + (count + 1) + "ª nota");   
            nota[count] = Double.parseDouble(input);
        }
    }   
  
    public double calculaMedia() {
        double soma = 0;
        for(int count = 0; count < nota.length; count++)
            soma += nota[count];
        return soma/nota.length;
    }   
  
    public void imprimeResultado(double media) {   
        if (media >= 7) {   
            JOptionPane.showMessageDialog(null, " Aluno aprovado");   
        } else if (media >= 3 && media < 7 ) {   
            JOptionPane.showMessageDialog(null, "Aluno com exame final");   
        } else {   
            JOptionPane.showMessageDialog(null, "Aluno reprovado");   
        }   
    }   
}

pronto ^^

public class Applicativo {   
    public static void main(String[] args) {   
        Nota teste = new Nota();   
        teste.pegarValores();
        double media = teste.calculaMedia();
        teste.imprimeResultado(media);   
    }   
}
Kura

rapaz, no seu main vc colocou uma variável soma para chamar o método calcula média.
mas se vc prestar atenção, a variável soma não existe.
vc declarou a variável soma no método. logo, a “soma” só vai ser visível no próprio método.

já que pegarValores não é um void e sim um double, tenta substituir isso:

teste.pegarValores(); teste.calculaMedia(soma); teste.ImprimeResultado(wil);

por isso:

double soma = teste.pegarValores(); double wil = teste.calculaMedia(soma); teste.ImprimeResultado(wil);

Se o método que vc cria não é um void, ele retorna alguma coisa.
Se ele retorna alguma coisa, ao chama-lo, você deve colocar o valor retornado pelo método numa variável. Senão, como você vai conseguir usa-lo?
Só conseguiria usar a variável soma e as outras se fossem atributos da classe. E não do método. Ai todos os métodos poderiam ser void e vc poderia usar seu main do jeito que você escreveu.

wilsontads

Caramba brother, você colocou realmente um desafio. Não o seu exercício, mas te ajudar a arrumar seu código. Você poderia começar trocando o nome do pacote para OutrosExercícios, com acento.

Bricadeiras à parte, como o thingol mostrou, use no main uma variável pra pegar o retorno de seus métodos. Essa mesma variável mutante pode ser usada como argumento para o próximo método.
Não vou falar como seria correto de se escrever seu programa porque não sei se cabe aqui mostrar conceitos de OO.

valeu pela força galera… meu main ficou assim:

double ret1 = teste.pegarValores(); double ret2 = teste.calculaMedia(ret1); double nos =teste.ImprimeResultado(ret2);

e o melhor de tudo. deu certo :lol:

Kura

Substitua

double nos =teste.imprimeResultado(ret2);

por

teste.imprimeResultado(ret2);

O método imprimeResultado só imprime na tela. Não retorna nada (por isso é void!)
Então você não deve atribuir a chamada a uma variável.

Criado 19 de março de 2009
Ultima resposta 19 de mar. de 2009
Respostas 10
Participantes 5