Cód para calcular média... [RESOLVIDO]

Oi Pessoal… eu fiz um código para calcular a média de um aluno, sendo o seguinte, entra com nota 1 e nota 2 se for menor que 6 fazer sub, caso contrario aprovado… esta funcionando, só que ele não esta calculando a média depois que a nota da sub substitui a menor nota.

Alguem sabe como posso resolver isso?!?! :cry:
Segue abaixo o código…

Abraços…

[code]package com.yourcompany.struts;

/**Programa que calcula a média do aluno,
*se o aluno fica de exame ou não e imprime
*Aprovado ou reprovado
*/

import javax.swing.JOptionPane;

public class Media
{
public static void main (String[]args)
{
String nome, n1, n2, nsub;
double nota1, nota2, sub, media;

	nome = JOptionPane.showInputDialog("Digite o nome do aluno");


	//Recebe a string nota
	
	n1 = JOptionPane.showInputDialog("Digite a p1");
	//converte a String em double
	nota1 = Double.parseDouble(n1);
	
	n2 = JOptionPane.showInputDialog("Digite a p2");
	nota2 = Double.parseDouble(n2);
	
	media = (nota1+nota2)/2;
	
	if (media>=6)
	{
		JOptionPane.showMessageDialog(null,"Aluno" +nome+"\n"+"A média do aluno é"+media,"Aluno Aprovado",JOptionPane.INFORMATION_MESSAGE);
	}
	else 
	{
	JOptionPane.showMessageDialog(null,"Aluno" +nome+"\n"+"A media do aluno é"+media, "Deverá fazer Prova Substituta", JOptionPane.WARNING_MESSAGE);
	}
	
	nsub = JOptionPane.showInputDialog("Digite a nota da Sub");
	//converte a String em double
	sub = Double.parseDouble(nsub);
	
	if (nota1<=6)
	{
		System.out.println(n1);
	
		nsub = n1;
		n1 = nsub;
	}
	else 
	{
		System.out.println(n2);
	}
	
			
	media = (sub + nota2)/2;
	
	if (sub>=6)
	{
		JOptionPane.showMessageDialog(null,"Aluno" +nome+"\n"+"A média do aluno é"+nsub,"Aluno Aprovado",JOptionPane.INFORMATION_MESSAGE);
	}
	else 
	{
	JOptionPane.showMessageDialog(null,"Aluno" +nome+"\n"+"A media do aluno é"+nsub, "Reprovado", JOptionPane.WARNING_MESSAGE);
	}

	System.exit(0);
}

}
[/code]

Está funcionando. fiz algumas alterações, vc vai perceber. Só coloquei algumas coisas dentro do else que executa quando a nota do aluno é menor que 6.0. Ele é que faz todo o trabalho quando o aluno deve fazer prova substituta… Qualquer dúvida, posta ai :slight_smile:

 /**Programa que calcula a média do aluno, 
 *se o aluno fica de exame ou não e imprime 
 *Aprovado ou reprovado
 */
 
 import javax.swing.JOptionPane;
 
 public class Media 
 {
 	public static void main (String[]args)
 	{
 		String nome, n1, n2, nsub;
 		double nota1, nota2, sub, media;
 		
 		
 		nome = JOptionPane.showInputDialog("Digite o nome do aluno");
 
 
 		//Recebe a string nota
 		
 		n1 = JOptionPane.showInputDialog("Digite a p1");
 		//converte a String em double
 		nota1 = Double.parseDouble(n1);
 		
 		n2 = JOptionPane.showInputDialog("Digite a p2");
 		nota2 = Double.parseDouble(n2);
 		
 		media = (nota1+nota2)/2;
 		
 		if (media>=6)
 		{
 			JOptionPane.showMessageDialog(null,"Aluno " +nome+"\n"+"A média do aluno é "+media,
						"Aluno Aprovado",JOptionPane.INFORMATION_MESSAGE);
 		}
 		else 
 		{
			JOptionPane.showMessageDialog(null,"Aluno " +nome+"\n"+"A media do aluno é "+ media,
						"Deverá fazer Prova Substituta", JOptionPane.WARNING_MESSAGE);
			nsub = JOptionPane.showInputDialog("Digite a nota da Sub");
			//converte a String em double
			sub = Double.parseDouble(nsub);
			media = (sub + nota2)/2;
			if (sub>=6)
 			{
 				JOptionPane.showMessageDialog(null,"Aluno" +nome+"\n"+"A média do aluno é "+nsub,
						"Aluno Aprovado",JOptionPane.INFORMATION_MESSAGE);
 			}
 			else 
 			{
 				JOptionPane.showMessageDialog(null,"Aluno" +nome+"\n"+"A media do aluno é "+nsub,
						"Reprovado", JOptionPane.WARNING_MESSAGE);
 			}
 		} 	
 		System.exit(0);
 	}
 }

Olá Renata,

Tente colocar o trecho de código que pede a nota substitutiva do aluno dentro da condição onde a média dele é menor que 6, ou seja, no else. Depois disso, verifique qual das duas notas, a 1 ou a 2 é a menor, e só então peça a nota substitutiva, jogando o valor na variável nota1 ou nota2, dependendo de qual for a menor.

[]s

aproveitando o código do colega cassio

                        nsub = JOptionPane.showInputDialog("Digite a nota da Sub");
 			//converte a String em double
 			sub = Double.parseDouble(nsub);

                        if (nota1 < nota2){
                           media = (sub + nota2)/2;
                        } else {
                           media = (nota1 + sub)/2;
                           }
 			
 			if (media>=6) //aqui estava if (sub>=6)

Falow…

Eu comentei o código.

 import javax.swing.JOptionPane;
 
 public class Media 
 {
    public static void main (String[]args){
        
        // Atributos
        String nome, n1, n2, nsub;
        double nota1, nota2, sub, media;
        
        //Recebendo o nome do aluno(a)
        nome = JOptionPane.showInputDialog("Digite o nome do aluno(a) ");

       //Recebe a string nota
        n1 = JOptionPane.showInputDialog("Digite a p1 ");
        n2 = JOptionPane.showInputDialog("Digite a p2");
        
        //converte a String em double
        nota1 = Double.parseDouble(n1);
        nota2 = Double.parseDouble(n2);

        //Calcula a media 
        media = (nota1+nota2)/2;
        
        //Verifica se a média é superior ou igual a 6
        if (media>=6){
            JOptionPane.showMessageDialog(null,"Aluno " +nome+"\n"+"A média do aluno(a) é "+media+"\n"+"Aluno(a) Aprovado.","Situação do Aluno(a)",JOptionPane.INFORMATION_MESSAGE);
        }else{
            JOptionPane.showMessageDialog(null,"Aluno " +nome+"\n"+"A media do aluno(a) é "+media+"\n"+"Deverá fazer Prova Substituta."+"\n"+"Pressione ok para digitar a nota da sub.","Situação do Aluno(a)", JOptionPane.WARNING_MESSAGE);
            
            //Recebendo e convertendo valor
            nsub = JOptionPane.showInputDialog("Digite a nota da Sub");
            sub = Double.parseDouble(nsub);

            //Calculando a nota da sub
            media = (sub + nota2)/2;

            if (media >=6 ){
                JOptionPane.showMessageDialog(null,"Aluno(a) " +nome+"\n"+"A média do aluno(a) é"+media+"\n"+"Aluno Aprovado","Situação do Aluno(a)",JOptionPane.INFORMATION_MESSAGE);
            }else{
                JOptionPane.showMessageDialog(null,"Aluno(a)" +nome+"\n"+"A media do aluno é"+media+"+\n"+"Reprovado","Situação do Aluno(a)", JOptionPane.WARNING_MESSAGE);
            }
        }
       System.exit(0);
    }
 }

BRIGADAO GALERA! ME AJUDARAM BASTANTE!!!
:oops:

Ólá. Eu consegui dar um reformulada em seu programa, só que como eu precisava de calcular com 4 notas assim o fiz, é só vc ver o que foi alterado e pegar a sintax. Abraço. Osvaldo.

Ficou assim…
/**Programa que calcula a média do aluno,
*se o aluno fica de exame ou não e imprime
*Aprovado ou reprovado
*/

import javax.swing.JOptionPane;

public class Media
{
public static void main (String[]args)
{
String nome, n1, n2, n3, n4, nsub;
double nota1, nota2, nota3, nota4, sub, media;

    nome = JOptionPane.showInputDialog("Digite o nome do aluno");   


    //Recebe a string nota   
       
    n1 = JOptionPane.showInputDialog("Digite a primeira nota");   
    //converte a String em double   
    nota1 = Double.parseDouble(n1);   
       
    n2 = JOptionPane.showInputDialog("Digite a segunda nota");   
    nota2 = Double.parseDouble(n2);
    
    n3 = JOptionPane.showInputDialog("Digite a terceira nota");   
    nota3 = Double.parseDouble(n3);
    
    n4 = JOptionPane.showInputDialog("Digite a Quarta nota");   
    nota4 = Double.parseDouble(n4);
       
    media = (nota1+nota2+nota3+nota4)/4;   
       
    if (media>=6)   
    {   
        JOptionPane.showMessageDialog(null,"Aluno " +nome+"\n"+"A média do aluno é "+media,"Aluno Aprovado",JOptionPane.INFORMATION_MESSAGE);
        System.exit(0); 
    }
    else   
    {   
    JOptionPane.showMessageDialog(null,"Aluno " +nome+"\n"+"A media do aluno é "+media, "Deverá fazer Prova Substituta", JOptionPane.WARNING_MESSAGE);   
    }   
       
    nsub = JOptionPane.showInputDialog("Digite a nota da Sub");   
    //converte a String em double   
    sub = Double.parseDouble(nsub);   
       
    /*if (sub<=6)   
    {   
        System.out.println(n1);   
       
        nsub = n1;   
        n1 = nsub;   
    }   
    else   
    {   
        System.out.println(n2);   
    }*/   
       
               
    media = (sub + media)/2;   
       
    if (media>=5)   
    {   
        JOptionPane.showMessageDialog(null,"Aluno " +nome+"\n"+"A média do aluno é "+media,"Aluno Aprovado",JOptionPane.INFORMATION_MESSAGE);   
    }   
    else  	   
    {   
    JOptionPane.showMessageDialog(null,"Aluno " +nome+"\n"+"A media do aluno é "+media, "Reprovado", JOptionPane.WARNING_MESSAGE);   
    }   
   
    System.exit(0);   
}   

}

LEGAL!

Como ficaria esse código usando ArrayList para guardar os nomes e notas dos alunos?

Pessoal, preciso de ajuda, por favor!!!
To com duvida nesse seguinte exercicio:
Escreva um programa para contar quantos números 5 foram digitados e acumule os números diferentes de 5 de um total de 50 números.

Já nesse aqui então: Escreva um código que receba 08 variáveis contendo as idades de 8 pessoas através da caixa de diálogo e calcule o total das idades e também a média aritmética das mesmas.
Apresentar uma saída conforme abaixo:
O total das idades é x,x,x e a média y,y,y.

Mandem em código, se puderem tá, esses exercicios que falei?
É porque tenho que entregar esse exercicio de java ainda hoje, por favor.
obrigado igualmente
Gabriel