importjavax.swing.JOptionPane;//bibliotecanecessariaparatrazerascaixasdedialogoclassavaliacao{publicstaticvoidmain(Stringargs[]){floatprova1,prova2,prova3,media;prova1=Float.parseFloat(JOptionPane.showInputDialog("Digite a primeira nota"));prova2=Float.parseFloat(JOptionPane.showInputDialog("Digite a segnda nota"));prova3=Float.parseFloat(JOptionPane.showInputDialog("Digite a terceira nota"));prova1=prova1*2/10;prova2=prova2*3/10;prova3=prova3*5/10;media=prova1+prova2+prova3;if(media>=7){JOptionPane.showMessageDialog(null,"sua media é = "+media+" voce foi aprovado");}elseif(media>=4){JOptionPane.showMessageDialog(null,"sua media é = "+media+" você esta de recuperação");}else{JOptionPane.showMessageDialog(null,"você foi reprovado "+media);}}}
Há várias formas de simplificar esse código. Você conhece arrays (vetores) e/ou listas em Java? Tente tirar do método main o cálculo da média e passe para outro método criado por você. Exemplo:
publicdoublecalculaMedia(ListaOuVetornotas){// Aqui vc vai percorrer o vetor ou a lista, calcular e retornar a média.}
MartinsAndreDablio
Conheço sim, mas de qualquer forma teremos que ter 3 entradas.
War_Paz
packageTest;importjavax.swing.JOptionPane;publicclassMaine{publicstaticvoidmain(Stringargs[]){floatmedia;floatprovas[]=newfloat[3];provas[0]=Float.parseFloat(JOptionPane.showInputDialog("Digite a primeira nota"));provas[1]=Float.parseFloat(JOptionPane.showInputDialog("Digite a segunda nota"));provas[2]=Float.parseFloat(JOptionPane.showInputDialog("Digite a terceira nota"));media=(provas[0]*2/10)+(provas[1]*3/10)+(provas[2]*5/10);//Aquiif(media>=4){//Eaqui,emboraonúmerodelinhaspermaneçaomesmo,achoqueficamais"bonito"assimif(media>=7){JOptionPane.showMessageDialog(null,"Sua media é = "+media+", você foi aprovado");}else{JOptionPane.showMessageDialog(null,"Sua media é = "+media+", você esta de recuperação");}}else{JOptionPane.showMessageDialog(null,"Você foi reprovado. Média: "+media);}}}
Edit: Não curto muito Arrays, prefiro Listas, mas já que é algo tão pequeno...
Arthur_F_Ferreira
Não necessariamente. Ao ler do dialog, ao invés de você jogar numa variável, basta vc jogar no array ou na lista. Isso vai facilitar o cálculo da sua média porque você pode se basear no tamanho da lista automaticamente ou na quantidade de registros do vetor.
ViniGodoy
Declare as variáveis quando for usa-las. Java não é C, não há necessidade de declarar tudo no início do método;
Você pode deixar a conta toda numa linha só;
Dá para simplificar um pouco se você separar o texto do resultado da exibição da média.
importjavax.swing.JOptionPane;//Dênomedeclassescomletramaiúscula.//Alémdisso,pelaconvençãodecódigodoJava,chavesficamnalinhadecima.publicclassAvaliacao{//Façaindentaçãodocódigocorretamentepublicstaticvoidmain(Stringargs[]){//Dênomesdescritivos.Avariávelrepresentamnotas,nãoprovas.floatnota1=Float.parseFloat(JOptionPane.showInputDialog("Digite a primeira nota"));floatnota2=Float.parseFloat(JOptionPane.showInputDialog("Digite a segunda nota"));floatnota3=Float.parseFloat(JOptionPane.showInputDialog("Digite a terceira nota"));//Evitemudarosignificadodavariávelnomeiodocaminhofloatmedia=(nota1*2+nota2*3+nota3*5)/10;Stringresultado;if(media>=7){resultado="voce foi aprovado";}elseif(media>=4){resultado="você esta de recuperação";}else{resultado="você foi reprovado ";}JOptionPane.showMessageDialog(null,"Sua média foi: "+media+". "+resultado);}}
MartinsAndreDablio
Vini obrigado pela sua explicação, realmente com essa organização fica muito melhor.
Parece um pouco mais complicado, mas observe que agora para termos mais provas, bastaria alterar o array de pesos.
MartinsAndreDablio
fiz esse só que não entra na condição,
importjavax.swing.JOptionPane;classavaliacao{publicstaticvoidmain(Stringargs[]){floatnota[]=newfloat[3];nota[1]=Float.parseFloat(JOptionPane.showInputDialog("Digite a primeira nota"));nota[2]=Float.parseFloat(JOptionPane.showInputDialog("Digite a segnda nota"));nota[3]=Float.parseFloat(JOptionPane.showInputDialog("Digite a terceira nota"));floatmedia=(((nota[1]*2)/10)+((nota[2]*3)/10)+((nota[3]*5)/10));if(media>=7){JOptionPane.showMessageDialog(null,"sua media é = "+media+" voce foi aprovado");}elseif(media>=4){JOptionPane.showMessageDialog(null,"sua media é = "+media+" você esta de recuperação");}else{JOptionPane.showMessageDialog(null,"você foi reprovado "+media);}}}
o que eu posso mehorar nele…
ViniGodoy
Os índices dos arrays começam em 0.
MartinsAndreDablio
Pronto agora acho que melhorei meu codigo bastante.
importjavax.swing.JOptionPane;classavaliacao{publicstaticvoidmain(Stringargs[]){Stringcondicao="";floatnota[]=newfloat[3];nota[0]=Float.parseFloat(JOptionPane.showInputDialog("Digite a primeira nota"));nota[1]=Float.parseFloat(JOptionPane.showInputDialog("Digite a segnda nota"));nota[2]=Float.parseFloat(JOptionPane.showInputDialog("Digite a terceira nota"));floatmedia=(((nota[0]*2)/10)+((nota[1]*3)/10)+((nota[2]*5)/10));if(media>=7){condicao="aprovado";}elseif(media>=4){condicao="Recuperação";}else{condicao="Reprovado";}JOptionPane.showMessageDialog(null,"você foi "+condicao+" . Sua nota foi "+media);}}
Muito Obrigado.
ViniGodoy
A indentação continua errada, assim como o nome da classe.
Há parênteses demais na sua expressão, o que mais atrapalha do que ajuda.
Você continua declarando variáveis no começo do método, baixa a variável condição para perto do if.
A palavra “segunda” está escrita sem “u”.
MartinsAndreDablio
acho que ainda peco muito na endentação.
importjavax.swing.JOptionPane;publicclassavaliacao{publicstaticvoidmain(Stringargs[]){floatnota[]=newfloat[3];nota[0]=Float.parseFloat(JOptionPane.showInputDialog("Digite a primeira nota"));nota[1]=Float.parseFloat(JOptionPane.showInputDialog("Digite a segunda nota"));nota[2]=Float.parseFloat(JOptionPane.showInputDialog("Digite a terceira nota"));floatmedia=(nota[0]*2/10+nota[1]*3/10+nota[2]*5/10);Stringresultado="";if(media>=7){resultado="aprovado";}elseif(media>=4){resultado="Recuperação";}else{resultado="Reprovado";}JOptionPane.showMessageDialog(null,"você foi "+resultado+" . Sua nota foi "+media);}}
Agora sim sempre o que está dentro irá pra frente, obrigado pelas dicas.
importjavax.swing.JOptionPane;publicclassavaliacao{publicstaticvoidmain(Stringargs[]){floatnota[]=newfloat[3];nota[0]=Float.parseFloat(JOptionPane.showInputDialog("Digite a primeira nota"));nota[1]=Float.parseFloat(JOptionPane.showInputDialog("Digite a segunda nota"));nota[2]=Float.parseFloat(JOptionPane.showInputDialog("Digite a terceira nota"));floatmedia=(nota[0]*2/10+nota[1]*3/10+nota[2]*5/10);Stringresultado;if(media>=7){resultado="aprovado";}elseif(media>=4){resultado="Recuperação";}else{resultado="Reprovado";}JOptionPane.showMessageDialog(null,"você foi "+resultado+" . Sua nota foi "+media);}}