Chamar um método dentro de outro

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:

[code]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);

}   

}

[/code]

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

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 vá 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.

for dentro do for…

:slight_smile: probleminha de logica…

isso ai vai resolver

[quote=abelgomes]for dentro do for…

:slight_smile: probleminha de logica…

isso ai vai resolver[/quote]

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

Fiz dessa forma:

[code]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();

}
}[/code]

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?

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?

[quote=Tiago Transltr]Fiz dessa forma:

[code]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();

}
}[/code]

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?
[/quote]

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

[quote=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?[/quote]

[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]

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

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: ) :

[code]
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;

}[/code]

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

[quote=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: ) :

[code]
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;

}[/code]

[/quote]

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

E pra que serve esse “length”?

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);

[quote=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).[/quote]

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: tiagocoelho2005@hotmail.com

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.

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).