importjavax.swing.JOptionPane;publicclassCalcula2{publicdoublen1;publicdoublen2;publicdoublen3;publicdoublemedia;publicstaticcharTeste(doublen1,doublen2,doublen3){doublevalor=0;if(valor>0&&valor<3)return'E';if(valor>3&&valor<5)return'D';if(valor>5&&valor<7)return'D';if(valor>7&&valor<9)return'D';if(valor>9&&valor<=10)return'A';}publicstaticvoidmain(String[]args){Stringaux;intmedia=0;Calcula2cal;cal=newCalcula2();aux=JOptionPane.showInputDialog("Digite sua primeira nota: ");cal.n1=Double.parseDouble(aux);aux=JOptionPane.showInputDialog("Digite sua segunda nota: ");cal.n2=Double.parseDouble(aux);aux=JOptionPane.showInputDialog("Digite sua terceira nota: ");cal.n3=Double.parseDouble(aux);JOptionPane.showMessageDialog(null,"Sua nota é: "+media);}}
Eu tenho que construir um metodo que receba três notas de uma aluno e retorne o conceito
Entre 3 e 0 conceito E
Entre 3 e 5 conceito D
Entre 5 e 7 conceito C
Entre 7 e 9 conceito B
Entre 9 e 10 conceito A
não dá muito certo dá empty character literal unclosed character literal :S
E nessa parte do método
public static char Teste(double n1,double n2,double n3)
{
dá missing return statement
Então não compila =(
Achei que fosse por causa do static, mas se tirar ele também não dá certo!!!
Obrigadinha romarcio"!
rafaelaalves
Se alguém quiser me responder, sinta-se a vontade… rsrs.
É porque estou com um pouco de pressa!!
Mephy
não entendi bem a dúvida, mas acho que pode ser uma dúvida sobre o tipo char
char não é string, não existem char null, vazio (’’), e char é somente UM caractere e nada mais, portanto, geralmente indicamos o vazio por uma única barra de espaço (’ ')
edit:
sobre o return: tente colocar os else-if’s e fechar com um else que dê retorno, e possivelmente usar uma variável char, pra facilitar o código
rafaelaalves
Sim, não pode ficar vazio, esse é o erro que dá quando coloco essa linha de código:
char Conceito=' ';
diz que não pode ficar vazio , pelo menos meu Netbeans apresenta este erro!
E no meu método que dá missing return statement
;P
Entende?
importjavax.swing.JOptionPane;publicclassCalcula2{publicdoublen1;publicdoublen2;publicdoublen3;publicdoublemedia;publicstaticcharTeste(doublen1,doublen2,doublen3){// missing return statementdoublevalor=0;valor=(n1+n2+n3)/3;if(valor>=0&&valor<3)return'E';if(valor>3&&valor<5)return'D';if(valor>5&&valor<7)return'D';if(valor>7&&valor<9)return'D';if(valor>9&&valor<=10)return'A';}publicstaticvoidmain(String[]args){charConceito=' ';// empty character literal (vazio apresenta erro não compila)Stringaux;Calcula2cal;cal=newCalcula2();aux=JOptionPane.showInputDialog("Digite sua primeira nota: ");cal.n1=Double.parseDouble(aux);aux=JOptionPane.showInputDialog("Digite sua segunda nota: ");cal.n2=Double.parseDouble(aux);aux=JOptionPane.showInputDialog("Digite sua terceira nota: ");cal.n3=Double.parseDouble(aux);Conceito=Teste(cal.n1,cal.n2,cal.n3);JOptionPane.showMessageDialog(null,"Conceito: "+Conceito);}}
essa é a mínima solução mais medíocre possível, mas devido à estrutura da classe, deve responder a sua dúvida "apressada"
gpellizzoni
Outra solução é ao invés de retornar um char vazio, jogar uma exceção:
publicstaticcharTeste(doublen1,doublen2,doublen3)throwsException{doublevalor=0;valor=(n1+n2+n3)/3;if(valor>=0&&valor<3){return'E';}if(valor>3&&valor<5){return'D';}if(valor>5&&valor<7){return'D';}if(valor>7&&valor<9){return'D';}if(valor>9&&valor<=10){return'A';}thrownewException("Informe um valor válido!");}
Seu código assim fica mais legível, pois informa o tipo de problema que ocorreu, possibilitando que você trate essa exceção com um catch, inclusive.
Espero ter ajudado.
rafaelaalves
Mephy, o problema é que o netbeans não tá aceitando isso:
char ret = ' ';
Ele não aceita que esteja vazio entende? Mas valeu assim mesmo. gpellizzoni nem cheguei a vê exeções, mas descobri onde se encontra o erro:
Conceito=Teste(cal.n1,cal.n2,cal.n3);
Mas não faço a mínima porque!
romarcio
Não deveria da erro na variavel conceito.
Deixa sem inicialização então char conceito;
O outro erro é porque você precisa colocar um return no método teste. Coloca depois do ultimo IF um return ' ';
rafaelaalves
Bom depois de muita ajudam descobri que eu estava fazendo todos os testes com o número 3, só que não tinha especificado em nenhum if, algo igual a 3 apenas maior ou menos :( :roll:
E naquela parte errada do conceito eu estava chamando apenas as variavéis vazias que eu declarei no começo.
Estava fazendo uma lógica que não existia :lol:
Mas programação né? É isso mesmo, obrigada pela ajuda glr. Ficou assim meu código compilando direitinho.
aaah, descobrir que tem que ter um return fora do if =s
Pelo menos o meu só deu certo assim.
importjavax.swing.JOptionPane;publicclassConceito2{publicstaticcharteste(doublen1,doublen2,doublen3){doublevalor=0;charret=' ';valor=(n1+n2+n3)/3;if(valor>=0&&valor<3){ret='E';}elseif(valor>=3&&valor<5){ret='D';}elseif(valor>=5&&valor<7){ret='C';}elseif(valor>=7&&valor<9){ret='B';}elseif(valor>=9&&valor<=10){ret='A';}returnret;}publicstaticvoidmain(String[]args){Stringaux;charConceito=' ';doubleN1;doubleN2;doubleN3;aux=JOptionPane.showInputDialog("Digite sua primeira nota: ");N1=Double.parseDouble(aux);aux=JOptionPane.showInputDialog("Digite sua segunda nota: ");N2=Double.parseDouble(aux);aux=JOptionPane.showInputDialog("Digite sua terceira nota: ");N3=Double.parseDouble(aux);Conceito2cal=newConceito2();Conceito=cal.teste(N1,N2,N3);// ficava apenas isso, *-*JOptionPane.showMessageDialog(null,"Conceito: "+Conceito);}}
romarcio
:thumbup:
Se resolveu sua dúvida, edita seu 1° post no tópico e no campo titulo coloca ao lado do titulo [Resolvido].
M
MatheusFalcade
A duvida é valida, mas vou te dar o conselho que o meu tutor me deu… lógica so vem com a prática, erro e acerto, este tipo de exercicio sera de extrema importancia para o seu futuro, tentar solucionalo sozinho é sempre bom (:
HelberChoo
Outra forma pratica que vejo para a resolução deste exercício é retornar um void no lugar de um char…
E colocar a mensagem a ser impressa dentro do método teste.
Assim no lugar de