Media matiz java[resolvido]

Olá pessoa! to com um probleminha aki, voltei a fazer exercicios de matiz pra dar uma treinada, só q acho q esqueci mesmo…
Tenho uma matriz q recebe 3 notas de 3 alunos, tenho q mostrar a média das notas deles,e não estou conseguindo calcular…
esse metodo recebe uma matriz double como parametro…Se puderem dar uam força agradeço!

public static double calcularMedia(double[][] notas, int i) {
        int j=0;
        double media=0,soma=0;
        for(i=0;i<3;i++){
            soma=0;media=0;
            for(j=0;j<3;j++){
                
                soma=soma+notas[i][j];
                media= soma/3;
                
            }
        }
        System.out.println(soma);
        System.out.println(media);
        return media;
        
    }

Você quer a média de nota individual por aluno ou a média das notas dos três?

Em todo caso, você não pode fazer o cálculo da média dentro do for mais interno (linha 9 do seu código), porque precisa somar as três notas antes de calcular a média.

Para a média por aluno:

[code]public static double calcularMedia(double[][] notas, int i) {
int j=0;
double media=0,soma=0;
for(i=0;i<3;i++){
soma=0;media=0;
for(j=0;j<3;j++){
soma=soma+notas[i][j];
}
media= soma/3;
System.out.println(soma);
System.out.println(media);
}

    return media;  
      
} [/code]

Para a média dos três alunos:

[code]public static double calcularMedia(double[][] notas, int i) {
int j=0;
double media=0,soma=0;
for(i=0;i<3;i++){
soma=0;media=0;
for(j=0;j<3;j++){
soma=soma+notas[i][j];
}
}
media= soma/9;
System.out.println(soma);
System.out.println(media);

    return media;  
      
} [/code]

Abraço.

então, é por aluno mesmo, valeu a resposta! mas acho q tem algo errado, tah mostrando as medias e as somas iguais de todos!
veja meu codigo completo: eu digitei 8 7 6 8 7 6 8 7 6, de maneira q sempre o aluno vai ter a mesma nota nas 3 provas. a soma sempre dá 21 e a media 7…

public static void main(String[] args) {
        int i=0;
        int ras[]=obterNumerosDeRa();
        double [][] notas= obterNotasNasProvas();
        
        for(i=0;i<ras.length;i++){
           double media=calcularMedia(notas,i);
          //int media=6;
            System.out.println(ras[i]);
            if(media>=7){
                System.out.println("Aprovado");
            }else if(media>=4){
                System.out.println("Exame");
            }else{
                System.out.println("Reprovado");
            }
        }
       
        
    }

    public static int [] obterNumerosDeRa() {
       int tam=3;
       
       Scanner e=new Scanner(System.in);
       
        int ra[]= new int [tam];
        for(int i=0;i<tam;i++){
            System.out.println("Digite o "+(i+1)+"º RA: ");
            ra[i]=e.nextInt();
        }
        return ra;
    }

    public static double[][] obterNotasNasProvas() {
       double nots [][]= new double [3][3];
       int i=0,j=0;
       Scanner e = new Scanner(System.in);
       
       for(i=0;i<nots.length;i++){
           
           for(j=0;j<nots.length;j++){
               System.out.println("Digite a "+(i+1)+"º nota do "+(j+1)+"º aluno: ");
               nots[i][j]=e.nextDouble();
               
           }
       }       
        
        return nots;
    }

    public static double calcularMedia(double[][] notas, int i) {
        int j=0;
        double media=0,soma=0;
        for(i=0;i<3;i++){
         soma=0;media=0;
            for(j=0;j<3;j++){
                
                soma=soma+notas[i][j];
                
                
            }
            
         media = soma/3;
        }
        System.out.println(soma);
        System.out.println(media);
        return media;
        
    }

abraço! valeu a ajuda…

Está meio confuso exibir a média em um método (calcularMedia) e a situação (aprovado ou não) em outro, mas vamos lá.

Seu método calcular média deve receber as notas de um aluno só, já que ele deve retornar a média somente de um aluno. Por isso, passe o vetor somente com as posições que interessam:

[code]public static void main(String[] args) {
int i=0;
int ras[]=obterNumerosDeRa();
double [][] notas= obterNotasNasProvas();

    for(i=0;i<ras.length;i++){
       double media=calcularMedia(notas[i]); // note a diferença aqui: só passo o vetor de notas de um aluno, um vetor simples, não uma matriz
        System.out.println("Aluno RA: " + ras[i] + "\n");
        if(media>=7){
            System.out.println("Aprovado : media = " + media); // imprimindo a média para ficar mais claro
        }else if(media>=4){
            System.out.println("Exame : media = " + media); // imprimindo a média para ficar mais claro
        }else{
            System.out.println("Reprovado : media = " + media); // imprimindo a média para ficar mais claro
        }
    }
}

public static int [] obterNumerosDeRa() {
   int tam=3;

   Scanner e=new Scanner(System.in);
   
    int ra[]= new int [tam];
    for(int i=0;i<tam;i++){
        System.out.println("Digite o "+(i+1)+"º RA: ");
        ra[i]=e.nextInt();
    }
    return ra;
}

public static double[][] obterNotasNasProvas() {
   double nots [][]= new double [3][3];
   int i=0,j=0;
   Scanner e = new Scanner(System.in);
   
   for(i=0;i<nots.length;i++){
       for(j=0;j<nots.length;j++){
           System.out.println("Digite a "+(i+1)+"º nota do "+(j+1)+"º aluno: ");
           nots[j][i]=e.nextDouble(); // inverti aqui, pois fica mais fácil de calcular depois passando o vetor inteiro: antes era nots[i][j]=e.nextDouble();
       }
   }       
    
    return nots;
}

public static double calcularMedia(double[] notas) {
    double media=0,soma=0;
    // note a diferença daqui pra baixo 
    for(int i=0;i<3;i++){
       	soma = soma + notas[i];
    }

    media = soma/3;
    System.out.println(soma);
    //System.out.println(media);

    return media;
}[/code]

Abraço.

Então TerraSkilll, eu preciso calcular a média dos 3 alunos,e mostrar a situação dos 3. no main vai mostrar : ra --> aprovado e a média…
fikei confuso…
OObrigado! se ainda puder ajudar…

[quote=nathanRayden]Então TerraSkilll, eu preciso calcular a média dos 3 alunos,e mostrar a situação dos 3. no main vai mostrar : ra --> aprovado e a média…
fikei confuso…
OObrigado! se ainda puder ajudar…[/quote]
Sou novato(em java) também, não entendi 100% o que vc quer, mas vou tentar.
Aproveitando o codigo do TerraSkilll:

	public static void main(String[] args) {
		int i = 0;
		int ras[] = obterNumerosDeRa();
		double[][] notas = obterNotasNasProvas();

		for (i = 0; i < ras.length; i++) {
			double[] mediaSoma = calcularMediaSoma(notas[i]);
			double media = mediaSoma[0];
			double soma = mediaSoma[1];

			if (media >= 7) {
				System.out.println("RA: " + ras[i] + "-- Aprovado , média = "
						+ media+", soma = "+soma);
			} else if (media >= 4) {
				System.out.println("RA: " + ras[i] + "-- Exame , média = "
						+ media+", soma = "+soma);
			} else {
				System.out.println("RA: " + ras[i] + "-- Reprovado , média = "
						+ media+", soma = "+soma);
			}
		}
	}

	public static int[] obterNumerosDeRa() {
		int tam = 3;

		Scanner e = new Scanner(System.in);

		int ra[] = new int[tam];
		for (int i = 0; i < tam; i++) {
			System.out.println("Digite o " + (i + 1) + "º RA: ");
			ra[i] = e.nextInt();
		}
		return ra;
	}

	public static double[][] obterNotasNasProvas() {
		double nots[][] = new double[3][3];
		int i = 0, j = 0;
		Scanner e = new Scanner(System.in);

		for (i = 0; i < nots.length; i++) {
			for (j = 0; j < nots.length; j++) {
				System.out.println("Digite a " + (i + 1) + "º nota do "
						+ (j + 1) + "º aluno: ");
				nots[j][i] = e.nextDouble();
			}
		}

		return nots;
	}

	public static double[] calcularMediaSoma(double[] notas) {
		double media = 0, soma = 0;
		double[] valores = new double[2];

		for (int i = 0; i < 3; i++) {
			soma = soma + notas[i];
		}

		media = soma / 3;
		valores[0] = media;
		valores[1] = soma;
		return valores;
	}

Testa ai

então brother, do jeito que vc fez funciona perfeitamente!! o problema é que tenho q usar essa bendita matriz…vou dar uma tentada aki… o prblema é qndo uso matriz ele parece que pega a soma de uma coluna só, ou só de um aluno… tem que ter uma maneira de fazer isso com matriz…

Mas muito obrigado! valeu a ajuda! :slight_smile:

Você executou o código que passei e o do asousaj? Porque, se o que fizemos faz o que você quer, então não entendi o que você precisa. Os dois códigos usam a matriz, então qual a dificuldade?

Abraço.

sim sim, executei sim, so que no exercio pede que meu Main esteja como eu mandei…
e nao consigo fazer isso recebendo notas[], ou notas[][], e mandar a media no return. aé executa, mas manda valores iguais pra todo mundo…

Tem de ser exatamente como está? Não pode mudar nadinha?
Seja mais claro, diga o que tem de ser mantido só assim alguem poderá lhe ajudar.

Falow!

Então feras, só o metodo MAIN não pode ser alterado…desculpe a falta de clareza…

public static void main(String[] args) {  
        int i=0;  
        int ras[]=obterNumerosDeRa();  
        double [][] notas= obterNotasNasProvas();  
          
        for(i=0;i<ras.length;i++){  
           double media=calcularMedia(notas,i);  
          //int media=6;  
            System.out.println(ras[i]);  
            if(media>=7){  
                System.out.println("Aprovado");  
            }else if(media>=4){  
                System.out.println("Exame");  
            }else{  
                System.out.println("Reprovado");  
            }  
        }  
         
          
    }  
  

O por isso q não da pra mim receber notas[], pq ele espera notas[][]…Desculpe a amolação gente…

Brother vamos aos fatos
Ter saída "RA -> aprovado - Média " como vc disse e[color=red] sem alterar uma linha da sua MAIN[/color] , infelizmente eu não vejo como. Posso estar errado é claro.
[size=18]
Acho que esse agora te atende, testa ai e responde, tinha uma falha no metodo da média q vc testou[/size]

public static void main(String[] args) {
		int i = 0;
		int ras[] = obterNumerosDeRa();
		double[][] notas = obterNotasNasProvas();

		for (i = 0; i < ras.length; i++) {
			double media = calcularMedia(notas, i);
			// int media=6;
			System.out.println(ras[i]);
			if (media >= 7) {
				System.out.println("Aprovado");
			} else if (media >= 4) {
				System.out.println("Exame");
			} else {
				System.out.println("Reprovado");
			}
		}

	}

	public static int[] obterNumerosDeRa() {
		int tam = 3;

		Scanner e = new Scanner(System.in);

		int ra[] = new int[tam];
		for (int i = 0; i < tam; i++) {
			System.out.println("Digite o " + (i + 1) + "º RA: ");
			ra[i] = e.nextInt();
		}
		return ra;
	}

	public static double[][] obterNotasNasProvas() {
		double nots[][] = new double[3][3];
		int i = 0, j = 0;
		Scanner e = new Scanner(System.in);

		for (i = 0; i < nots.length; i++) {

			for (j = 0; j < nots.length; j++) {
				System.out.println("Digite a " + (i + 1) + "º nota do "
						+ (j + 1) + "º aluno: ");
				nots[i][j] = e.nextDouble();

			}
		}

		return nots;
	}

	public static double calcularMedia(double[][] notas, int i) {
		double media = 0, soma = 0;
		for (int j = 0; j < 3; j++) {

			soma = soma + notas[j][i];

		}

		media = soma / 3;
		System.out.println("\n\nSoma: " + soma);
		System.out.println("Média: " + media);
		return media;

	}

Obrigado asousaj e TerraSkilll pela força! asousaj, esse ultimo funcionou certinho!!! se não fosse tão longe eu pagava uma cerva pra nos !!
Eternamente grato! abraço!