Como coloco isso? [RESOLVIDO]

15 respostas
rafaelaalves
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);

    }
}

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 *-*

15 Respostas

Andre_Rosa

Quem quiser ajudar ela, é só falar!

É cada um…

romarcio

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

Valeu romarcioo

rafaelaalves

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

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


    }
}
Mephy
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;
}

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:

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

    }

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.

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


    }


}
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

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

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

Criado 3 de agosto de 2011
Ultima resposta 11 de ago. de 2011
Respostas 15
Participantes 7