Mais uma vez com duvida em JAVa

olá pessoal estou fazendo um exercico e ele pede para calcular duas notas tirar a media e informar se o aluno ou aprovado se a a media for maior ou igual a 7 se foir menor solicitar exame final e pedir a nota desse exame e depois somar com a nota da media antiga e por fim se a nova nota for maior ou igual 5 ele estara aprovado, mas se for menos ele esta reprovado.

[color=red]import javax.swing.JOptionPane;

public class Questao08 {

public static void main(String[] args) {

    double n1, n2, m, ne, ef = 0;

    n1 = Double.parseDouble(JOptionPane.showInputDialog("digite nota 1ª av"));
    n2 = Double.parseDouble(JOptionPane.showInputDialog("digite nota 2ª av"));
    m = (n1 + n2) / 2;

    if (m >= 7) {
        JOptionPane.showMessageDialog(null, "aluno aprovado" + m);
    } else if (m < 7) {
        JOptionPane.showMessageDialog(null, "solicite exame final" + m);
        ne = Double.parseDouble(JOptionPane.showInputDialog("digite a nova nota"));
        ef = (ne + m) / 2; //<--- esta dendo erro aqui e não sei pq ?

    } else if (ef >= 5) {

        JOptionPane.showMessageDialog(null, "aluno aprovado" + ef);
    } else if (ef < 5) {
        JOptionPane.showMessageDialog(null, "aluno reprovado" + ef);

    }
}

}[/color]

se puder ajudar eu agradeço

Coloque o seu código entre as tags [ code ] e [ / code ] para formatar o seu código-fonte …

E você não disse que exatamente não está funcionando no seu código …

ele não passa da parte em que tem de calcular a nota do exame final somando com a media obtida antes. o programa fecha

[code]import javax.swing.JOptionPane;

public class Questao08 {

public static void main(String[] args) {

    double n1, n2, m, ne, ef;

    n1 = Double.parseDouble(JOptionPane.showInputDialog("digite nota 1ª av"));
    n2 = Double.parseDouble(JOptionPane.showInputDialog("digite nota 2ª av"));
    m = (n1 + n2) / 2;

    if (m >= 7) {
        JOptionPane.showMessageDialog(null, "aluno aprovado" + m);
    } else if (m < 7) {
        JOptionPane.showMessageDialog(null, "solicite exame final" + m);
        ne = Double.parseDouble(JOptionPane.showInputDialog("digite a nova nota"));
        ef = (ne + m) / 2; //<--- esta dendo erro aqui e não sei pq ?

    } else if (ef >= 5) {

        JOptionPane.showMessageDialog(null, "aluno aprovado" + ef);
    } else if (ef < 5) {
        JOptionPane.showMessageDialog(null, "aluno reprovado" + ef);

    }
}[/code]

Na verdade o seu erro não está na soma dos valores, mas sim na colocação dos if’s.


         } else if (m &lt; 7) {  
            JOptionPane.showMessageDialog(null, &quot;solicite exame final&quot; + m);  
            ne = Double.parseDouble(JOptionPane.showInputDialog(&quot;digite a nova nota&quot;));  
            ef = (ne + m) / 2; //&lt;--- esta dendo erro aqui e não sei pq ?  
  
        // este IF está relacionado ao primeiro IF if(m &gt;= 7)

        } else if (ef &gt;= 5) {  
  
            JOptionPane.showMessageDialog(null, &quot;aluno aprovado&quot; + ef);  
        } else if (ef &lt; 5) {  
            JOptionPane.showMessageDialog(null, &quot;aluno reprovado&quot; + ef);  
  
        }  

Você pode resolver o problema, apenas alterando o loca desta verificação, você pode colocar logo após a nova soma…

import javax.swing.JOptionPane;

public class Main {

	public static void main(String[] args) {

		double n1, n2, m, ne, ef = 0;

		n1 = Double.parseDouble(JOptionPane.showInputDialog(&quot;digite nota 1ª av&quot;));
		n2 = Double.parseDouble(JOptionPane.showInputDialog(&quot;digite nota 2ª av&quot;));
		m = (n1 + n2) / 2;

		if (m &gt;= 7) {
			JOptionPane.showMessageDialog(null, &quot;aluno aprovado&quot; + m);
		} else if (m &lt; 7) {
			JOptionPane.showMessageDialog(null, &quot;solicite exame final&quot; + m);
			ne = Double.parseDouble(JOptionPane.showInputDialog(&quot;digite a nova nota&quot;));
			ef = (ne + m) / 2;
			if (ef &gt;= 5) {

				JOptionPane.showMessageDialog(null, &quot;aluno aprovado&quot; + ef);
			} else if (ef &lt; 5) {
				JOptionPane.showMessageDialog(null, &quot;aluno reprovado&quot; + ef);

			}
		}
	}

}

Assim irá funcionar, mas lembre-se que como foi atendida a verificação do primeiro else (m < 7), ele não irá acessar as próximas verificações, pois o if, trabalha da maneira que, se é então faça {<código>} senão é então faça {<código>} assim ele irá entrar em apenas um bloco de execução, e não fará as próximas verificações se alguma anterior já foi atendida.

eu pensei que else if sempre iria depois que o if começa, mas obrigado aprendi mais uma.