Ajuda com Método de Alunos aprovados ou reprovados

Criei o seguinte método:

[code] private void calcularaprovados() {

    try {

        double nota = Double.parseDouble(txtNota.getText());

        int faltas = Integer.parseInt(txtQtdeFaltas.getText());
        String resultado = (txtStatus.getText());

        if (nota >= 60 && faltas < 10){
            resultado = "Aprovado";
        }else{
            resultado = "Reprovado";
        }

        Desempenho desem = new Desempenho();
        desem.setStatus(resultado);

        }catch (Exception e) {
        
    }

}[/code]

Com o propósito de ele pegar o valor digitado no txtNota e txtQtdeFaltas, calcula-se o resultado e retorna-se no txtStatus se o aluno esta aprovado ou reprovado.

Criei um botão resultado, e chamei o método neste botão, para quando fosse clicado executasse o método e para preencher o txtStatus.

Mas não está funcionando e aparentemente não aparece erro nenhum.

Estou muito longe do resultado?

E outra pergunta, também queria que o txtStatus ao trazer o resultado mudasse de cor, também tem como?

Abraços!

Opa, não sei si entendir direito seu problema, você quer ao clicar num possível botão esse método faça o calculo que você colocou e mostre o resultado?? em um textfild é isso???

Sim!

No caso o Textfild seria o txtStatus.

hum… então acho que você pode tentar fazer isso, vou alterar seu método de calcularAprovados(), e fazer uma parada no seu botão de mostrar o resultdo.

MÉTODO DE CALCULAR ALTERADO

[code] private Desempenho calcularAprovados() {

    try {

        double nota = Double.parseDouble(txtNota.getText());

        int faltas = Integer.parseInt(txtQtdeFaltas.getText());
        String resultado = (txtStatus.getText());

        if (nota >= 60 && faltas < 10){
            resultado = "Aprovado";
        }else{
            resultado = "Reprovado";
        }

        Desempenho desem = new Desempenho();
        desem.setStatus(resultado);

       return desem; // retorna o objeto

        }catch (Exception e) {
        
    }

}[/code]

POSSÍVEL BOTÃO

...............................................

  Desempenho des = this.calcularAprovados() ;
  String status = des.getStatus()//  CONSIDERANDO QUE NA SUA CLASSE DESEMPENHO TENHA O MÉTODO GETSTATUS()
  seuTextFieldStatus.setText(status); // SETANDO O VALOR NO SEU TEXTFIELD

..................................................

Testa ai doido…

missing return statement …

Da problema no retorno.

[code]private Desempenho calcularAprovados() {

Desempenho desem = new Desempenho();

try {

    double nota = Double.parseDouble(txtNota.getText());
    int faltas = Integer.parseInt(txtQtdeFaltas.getText());

    if (nota >= 60 && faltas < 10){
        desem.setStatus( "Aprovado" );
    }else{
        desem.setStatus( "Reprovado" );
    }

} catch ( NumberFormatException e ) {
        
}

return desenho;

}[/code]
Eu faria de outra forma… Para mim, quem deve falar se o aluno está aprovado ou reprovado é a classe Desempenho.
Então vc configuraria tanto a nota, quanto a quantidade de faltas, e então chamaria o getStatus. Outra coisa, não faz muito sentido ter uma classe Desempenho se você não for amarrar ela a algum aluno (vc já deve ter feito isso…).

[code]public class Desempenho {

private double nota;
private int faltas;

public void setNota( double nota ) {
    this.nota = nota;
}

public double getNota() {
    return nota;
}

public void setFaltas( int faltas ) {
    this.faltas = faltas;
}

public int getFaltas() {
    return faltas;
}

public String getStatus() {

    if (nota >= 60 && faltas < 10){
        return "Aprovado";
    }else{
        return "Reprovado";
    }

}

}

// na sua classe de GUI…
private void calcularAprovados() {

try {
    
    Desempenho desem = new Desempenho();
    desem.setNota( Double.parseDouble(txtNota.getText()) );
    desem.setFaltas( Integer.parseInt(txtQtdeFaltas.getText()) );

    seuCampoDeStatus.setText( desem.getStatus() );

} catch ( NumberFormatException e ) {
        
}

}[/code]
[]´s

O Jeito do davidbuzatto deu certinho!

Minha tabela Desempenho é amarrada com Matricula, só realizo o desempenho de alunos matriculados.

E se eu quiser mudar a cor do TextFiled dependendo do resultado???
Por exemplo, se for aprovado muda para Verde, reprovado muda para Vermelho.

[quote=brunoaquino]missing return statement …

Da problema no retorno.

[/quote]

Opa, eu fiz testa esses códigos aqui agora… acho que vai dar certo…

MÉTODO QUE CALCULA

[code] private Desempenho calcularAprovados()
{
Desempenho desem = new Desempenho();

    double nota = Double.parseDouble(txtNota.getText());
    int faltas = Integer.parseInt(txtQtdeFaltas.getText());
    String resultado;

    if((nota >= 60) && (faltas < 10))
    {
        resultado = "APROVADO";
    }else{
        resultado = "REPROVADO";
    }

    desem.setStatus(resultado);

    return desem;
}[/code]

AÇÃO DO BOTÃO QUE APRESENTA O RESULTADO

[code] private void bt_statusActionPerformed(java.awt.event.ActionEvent evt) {

    if(evt.getSource() == bt_status)
    {
        Desempenho des = this.calcularAprovados();
        txtStatus.setText(des.getStatus());
    }
}[/code]

O metodo para Class_final é para ser implementado com o código de retorno de “aprovado” ou “reprovado”.
Olhe o exemplo, e tente entender, ok?

[code]import java.util.ArrayList;
import java.util.Scanner;

public class Nomes {

/**  
 * @param args  
 */   
public static void main(String[] args) {   
    Scanner in = new Scanner(System.in);     
    ArrayList<Aluno> Escola = new ArrayList<Aluno>(10);     
    String Nome;     
    Double Nota = null;     
    int contador = 0;     
    while (contador < 10) {     
 
        Nome = in.next();     
        Nota = in.nextDouble();     
        Aluno fakir = new Aluno(Nome, Nota);     
        Escola.add(fakir);     
        contador++;     
    }     
 
    for (Aluno x : Escola) {     
        System.out.println("Nome :" + x.getNome() + " " + "Media : "     
                + x.getNota() + " " + "Resultado :" + x.getResultado(x.getNota()));   
 
    }     
}     

}

public class Aluno {
	
	private String nome;
	private double nota;
	
	public Aluno(String nome, double nota){
		this.nome = nome;
		this.nota = nota;
	}
	
	public String getNome(){
		return this.nome;
	}
	
	public double getNota(){
		return this.nota;
	}
	
	public String getResultado(Double n){
		if(n < 7) return "reprovado";
		else return "aprovado";
	}
}[/code]

então vc deve melhorar para realizar o que vc quer…
(Calcular Média, não está implementado nesse código.)

faça o que bem entender!

abrxx

Pessoal Obrigado pela ajuda!

Já funcionou do jeito que eu queria com a ajuda do david buzatto ai em cima.

Só queria saber agora como eu mudo a cor do TextFiel (txtStatu) ??

Por exemplo, Verde = Aprovado e Vermelho = Reprovado.

ve se ajuda isso!

[code]
if (seu txt .getText().equals("")){

		/*seta o background para vermelho reprovado*/   

		seu txt .setBackground(Color.RED);   

}esle{

/seta o background para verde aprovado/

		seu txt .setBackground(Color.GREEN);  [/code]

não sei se vai servir isso!

Use o método setForeground( java.awt.Color ) herdado de JComponent para mudar a cor do texto.

[code]
// new Color( vermelho, verde, azul )
seuTextField.setForeground( new Color( 0, 190, 0 ) );

// ou
seuTextField.setForeground( Color.GREEN );[/code]

O método setBackground muda a cor do fundo do componente.

[]´s

Blz Resolvido!

Obrigado pela Ajuda.