Ajuda com Método de Alunos aprovados ou reprovados

12 respostas
brunoaquino

Criei o seguinte método:

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) {
            
        }

    }

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!

12 Respostas

A

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

brunoaquino

Sim!

No caso o Textfild seria o txtStatus.

A

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
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) {
            
        }

    }
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...

brunoaquino

missing return statement …

Da problema no retorno.

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

}
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...).
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 ) {
            
    }

}
[]´s
brunoaquino

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.

A
brunoaquino:
missing return statement ...

Da problema no retorno.

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

MÉTODO QUE CALCULA
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;
    }
AÇÃO DO BOTÃO QUE APRESENTA O RESULTADO
private void bt_statusActionPerformed(java.awt.event.ActionEvent evt) {

        if(evt.getSource() == bt_status)
        {
            Desempenho des = this.calcularAprovados();
            txtStatus.setText(des.getStatus());
        }
    }
L

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?

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

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

brunoaquino

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.

L

ve se ajuda isso!

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

não sei se vai servir isso!

davidbuzatto

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

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

// ou
seuTextField.setForeground( Color.GREEN );

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

[]´s

brunoaquino

Blz Resolvido!

Obrigado pela Ajuda.

Criado 5 de novembro de 2010
Ultima resposta 5 de nov. de 2010
Respostas 12
Participantes 4