Como coloco isso? [RESOLVIDO]

[code]import javax.swing.JOptionPane;
public class Calcula2 {
public double n1;
public double n2;
public double n3;
public double media;
public static char Teste(double n1,double n2,double n3)
{
double valor=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';

}

public static void main(String[] args) {
String aux;
int media=0;
Calcula2 cal;
cal = new Calcula2();
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);

}

}
[/code]

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

Quem quiser me ajudar… valeu -

Quem quiser ajudar ela, é só falar!

É cada um…

No método teste você deve calcular a média antes de fazer os testes condicionais: double valor= (n1+n2+n3)/3;

Dai no método main você cria uma variavel do tipo char para receber o conceito: char conceito = ' ';

Então faz assim:

conceito = teste(cal.n1, cal.n2, cal.n3);
JOptionPane.showMessageDialog(null,"Conceito: "+ conceito);

Valeu romarcioo

Bom amei a a ajuda!!
Ótima .
Porém,

char Conceito=' ';

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) {
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"!

Se alguém quiser me responder, sinta-se a vontade… rsrs.
É porque estou com um pouco de pressa!!

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

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
:stuck_out_tongue_winking_eye:
Entende?

[code]import javax.swing.JOptionPane;
public class Calcula2 {

public double n1;
public double n2;
public double n3;
public double media;
public static char Teste(double n1,double n2,double n3)
{ // missing return statement
double valor=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';

}

public static void main(String[] args) {
char Conceito=’ '; // empty character literal (vazio apresenta erro não compila)
String aux;
Calcula2 cal;
cal = new Calcula2();
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);

}

}[/code]

[code]public static char Teste(double n1, double n2, double n3) {
double valor = (n1 + n2 + n3) / 3;
char ret = ’ ';
if (valor >= 0 && valor < 3) {
ret = ‘E’;
} else if (valor >= 3 && valor < 5) {
ret = ‘D’;
}

ret = ‘A’
}

return ret;
}[/code]

essa é a mínima solução mais medíocre possível, mas devido à estrutura da classe, deve responder a sua dúvida “apressada”

Outra solução é ao invés de retornar um char vazio, jogar uma exceção:

[code] public static char Teste(double n1, double n2, double n3) throws Exception {
double valor = 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';
    }
    
    throw new Exception("Informe um valor válido!");

}

[/code]

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.

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!

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 ' ';

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 :frowning: :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.

[code]import javax.swing.JOptionPane;
public class Conceito2 {
public static char teste(double n1,double n2, double n3)
{
double valor=0;
char ret=’ ';
valor=(n1+n2+n3)/3;
if(valor>=0&&valor<3){

    ret='E';
}

else if (valor >= 3 && valor < 5) {

    ret='D';
}
 else if(valor >= 5 && valor < 7)
 {

    ret='C';
}
 else if(valor >= 7 && valor < 9)
 {

    ret='B';
}
 else if(valor >= 9 && valor <= 10)
 {

    ret='A';
}

return ret;

}

public static void main(String[] args) {
String aux;
char Conceito=’ ';
double N1;
double N2;
double N3;

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);

Conceito2 cal = new Conceito2();
Conceito=cal.teste(N1,N2,N3);// ficava apenas isso, *-*

JOptionPane.showMessageDialog(null,"Conceito: "+Conceito);

}

}[/code]

:thumbup:
Se resolveu sua dúvida, edita seu 1° post no tópico e no campo titulo coloca ao lado do titulo [Resolvido].

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 (:

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

public static char teste(double n1,double n2, double n3) { .... return ret; }
terias

public static void teste(double n1,double n2, double n3) { .... if(ret!=' ') JOptionPane.showMessageDialog(null,"Conceito: "+ret); }

e o código principal substituir:

Conceito=cal.teste(N1,N2,N3);// ficava apenas isso, *-*  
JOptionPane.showMessageDialog(null,"Conceito: "+Conceito);

por: cal.teste(N1,N2,N3);