Chamar um método dentro de outro

15 respostas
Tiago_Transltr

1.Escreva um programa para ler o número de alunos existentes em uma turma, ler as notas destes alunos, e calcular a média aritmética destas notas.
[color=blue]Sugestão: faça método para ler os dados e outro para calcular e retornar a média.[/color]

Criei uma classe e 2 métodos dentro dela, no primeiro método dois comandos, quero que execute o primeiro comando no primeiro metodo e o segundo comando do primeiro metodo, seja executado no segundo metodo.. Ficou meio complicado pra entender mais com o programa ficar melhor:

package questao6;

import javax.swing.JOptionPane;

public class Main {

    public static void main(String[] args) {
    
   
class nome{
    double nota02;
    double soma = 0;
    double media;
    int notas;
    int vetor[]= new int [notas]; // Entendeu? 
    
    void dados(){
    notas = Integer.parseInt(JOptionPane.showInputDialog(null,"Digite o número de Notas: ")); 
    nota02 = Double.parseDouble(JOptionPane.showInputDialog(null,"Digite o valor das Notas: ")); } 
    
    void calculo(){     
     
for(int i = 0; i != notas; i++){
// Fazer com que a linha 19 seja executada aqui...
soma = soma + nota02;} 
media = soma/notas;

JOptionPane.showMessageDialog(null, "A média das notas é: " + media);
    
    
    }   
  
}

Alguem sabe como eu chamo a somente a linha 19 pra ser executada na linha 24?

15 Respostas

M

Sugestão: você deve ter uma variável para a quantidade de notas (quantidadeNotas, por exemplo) e criar um vetor com esse número de posições. Depois, em um laço de repedição, leia notas “quantidadeNotas” vezes (captou?) e por fim, divida a soma por quantidadeNotas.

Algoritmo:

1 - Leia quantas notas são e armazene um uma variável (quantidadeNotas)

2 - Crie um vetor com quantidadeNotas posições

3 - Leia notas quantidadeNotas vezes (for ) e  armazenando essas notas no vetor criado.

4 - Crie um variável soma e percorra esse vetor, aumentando seu valor a cada iteração (soma += notas[i])

5 - Divida a soma por quantidadeNotas

6 - Mostre o valor do resultado

Qualquer coisa avisa.

abelgomes

for dentro do for…

:slight_smile: probleminha de logica…

isso ai vai resolver

Tiago_Transltr

abelgomes:
for dentro do for…

:slight_smile: probleminha de logica…

isso ai vai resolver

Eu queria fazer com método, conforme foi sugerido pela professor na questão…

Tiago_Transltr

Fiz dessa forma:

package media;

import javax.swing.JOptionPane;

public class Main {

    public static void main(String[] args) {

class nome{
    
    double nota02,soma, media, soma02 = 0;
    int notas;
    int vetor[]= new int [notas];
    
    void dados(){
    notas = Integer.parseInt(JOptionPane.showInputDialog(null,"Digite o número de Notas: "));} 
    
    public double dados2(){
    nota02 = Double.parseDouble(JOptionPane.showInputDialog(null,"Digite o valor das Notas: ")); 
    return nota02;}
        
    void calculo(){     
    
    for(int i = 0; i != notas; i++){
    nome num = new nome();
    soma += num.dados2();} 
    
    media = soma/notas;
   
    JOptionPane.showMessageDialog(null, "A média das notas é: " + media );
   }   
  
}

nome num = new nome();
num.dados();
num.calculo();

}
}

Pelo enunciado da questão [color=blue](Sugestão: faça método para ler os dados e outro para calcular e retornar a média.
) [/color] vocês acham que está certo? Senão como fazer?

thegoergen

Não sei se consegui entender, mas:
Crie um método que execute o que você executa na linha 19, e chame ele na linha 19 e na 24…
Isso?

thegoergen
Tiago Transltr:
Fiz dessa forma:
package media;

import javax.swing.JOptionPane;

public class Main {

    public static void main(String[] args) {

class nome{
    
    double nota02,soma, media, soma02 = 0;
    int notas;
    int vetor[]= new int [notas];
    
    void dados(){
    notas = Integer.parseInt(JOptionPane.showInputDialog(null,"Digite o número de Notas: "));} 
    
    public double dados2(){
    nota02 = Double.parseDouble(JOptionPane.showInputDialog(null,"Digite o valor das Notas: ")); 
    return nota02;}
        
    void calculo(){     
    
    for(int i = 0; i != notas; i++){
    nome num = new nome();
    soma += num.dados2();} 
    
    media = soma/notas;
   
    JOptionPane.showMessageDialog(null, "A média das notas é: " + media );
   }   
  
}

nome num = new nome();
num.dados();
num.calculo();

}
}

Pelo enunciado da questão [color=blue](Sugestão: faça método para ler os dados e outro para calcular e retornar a média.
) [/color] vocês acham que está certo? Senão como fazer?

Caraca! Isso compilou? Você criou um método dentro do outro...

Tiago_Transltr

thegoergen:
Não sei se consegui entender, mas:
Crie um método que execute o que você executa na linha 19, e chame ele na linha 19 e na 24…
Isso?

[b]Na verdade é apenas fazer um método para ler os dados e outro pra calcular e exibir a média…

Eu conseguir fazer 2 métodos pros dados e 1 pra calcular e exibir a nota…[/b]

Tiago_Transltr

Não… eu criei 3 métodos dentro de um classe… apenas usei um metodo dentro de um outro método… deu certo sim…

thegoergen

Eu sugiro trabalhar com vetores, fica mais genérico e você não precisa definir o número de notas.

Daí você pode calcular a média assim (vou te dar o método pronto, mas não conta pra ninguém :wink: ) :

private double calcula(double[] notas){
double soma = 0;
for(int i =0; i < notas.length; i++{
soma += notas[i]; // Vou somando todas as notas
}
// Faço a média, que é a soma de tudo dividido pelo número de notas;
return soma/notas.length;

}
thegoergen

Desculpe, não tinha visto teu “}” no finalzinho, tenta identar melhor teu código… hehehehe

Tiago_Transltr
thegoergen:
Eu sugiro trabalhar com vetores, fica mais genérico e você não precisa definir o número de notas.

Daí você pode calcular a média assim (vou te dar o método pronto, mas não conta pra ninguém :wink: ) :

private double calcula(double[] notas){
double soma = 0;
for(int i =0; i < notas.length; i++{
soma += notas[i]; // Vou somando todas as notas
}
// Faço a média, que é a soma de tudo dividido pelo número de notas;
return soma/notas.length;

}

Ficou bem menor que o meu... Valew ....só mais uma coisinha: como eu chamo isso? pra ser exibido?

E pra que serve esse "length"?

thegoergen

O length é o tamanho do vetor.

Aquele “notas” tem que ser carregado, com o número de notas que você quiser (não vi especificação sobre isso no problema).

final int numeroNotas = 3;

double notas = new double[numeroNotas];

for(int i =0; i < numeroNotas; i++){
notas[i] = Double.parseDoulbe( JOptionPane.showInputDialog(null,"Digite o número de Notas: ") );
}

double media = calcula(notas);
Tiago_Transltr

thegoergen:
O length é o tamanho do vetor.

Aquele “notas” tem que ser carregado, com o número de notas que você quiser (não vi especificação sobre isso no problema).

1 - Ler quantas notas vão ser digitadas
2 - calcular a media dessas notas
3 - Exibir a media

no caso do seu método não tem como ler a quantidade de notas nem ficar pedindo as notas ate atingir a quantidade digitada…

Add ai meu msn: [email removido]

thegoergen

Meu método só fazia o passo 2.

Perceba que você já tem o algoritmo pronto, transforme cada um deles em um método, e no main você chama eles em seqüência.

M

Você armazena todas as notas em um vetor, e faz a chamada de método dessa maneira:

// supondo que as notas estejam em um vetor v
double media = calcula(v);

E o length se refere ao tamanho do array (quantas posições o dito cujo tem).

Criado 22 de dezembro de 2008
Ultima resposta 22 de dez. de 2008
Respostas 15
Participantes 4