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 < 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 ?
// este IF está relacionado ao primeiro IF if(m >= 7)
} else if (ef >= 5) {
JOptionPane.showMessageDialog(null, "aluno aprovado" + ef);
} else if (ef < 5) {
JOptionPane.showMessageDialog(null, "aluno reprovado" + 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("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;
if (ef >= 5) {
JOptionPane.showMessageDialog(null, "aluno aprovado" + ef);
} else if (ef < 5) {
JOptionPane.showMessageDialog(null, "aluno reprovado" + 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.