[RESOLVIDO] Onde está meu erro nesse if, nao consigo entender

15 respostas
charles.eduardo

Estou fazendo um atividade que usei um IF

/* * Além disto, a situação do aluno 
 * - "Aprovado" se a média for maior ou igual a 7, 
 * "Exame" se a média for maior ou igual a 2 e menor que 7 e 
 * "Reprovado" se a média for menor que 2 - 
 * deve ser apresentada em outro componente JLabel. */
if(resultado >= 7) {
					resultadoStatus.setText("Aprovado");
				} else if(resultado < 7 && resultado >= 2 ) {
					resultadoStatus.setText("Exame");
				} else {
					resultadoStatus.setText("Reprovado");
				}
			}

O problema é que nao estou conseguindo visualizar "Reprovado" se o resultado é menor que 2. Onde está meu erro???
Ja alterei este if de todas as formas imaginaveis e nao apareceu reprovado

15 Respostas

JhowTroMundo

Com a estrutura if else, não há problema algum.

rdmardegam

No meu ver está correto, tem certeza que está passando um valor menor que 2 ?

Só para ter certeza, qual o tipo de variável “resultado”?

Abraço

fernandosavio

Eu testei o código aqui e deu tudo certo!
Só cuida que tem um ‘{’ a mais aí! (pelo menos no código postado)!

mausexdd

testei aqui funcionou perfeitamente.

public class ifelse {
	public static void main(String[] args) {

		Integer resultado = Integer.valueOf(JOptionPane
				.showInputDialog("Entre resultado"));
		String resultadoStatus = " ";

		if (resultado >= 7)
			resultadoStatus = "Aprovado";
		else if (resultado < 7 && resultado >= 2)
			resultadoStatus = "Exame";
		else
			resultadoStatus = "Reprovado";

		JOptionPane.showMessageDialog(null, "Nota:" + resultado + " Status: "
				+ resultadoStatus);
	}
}
Como o amigo disse Acho que o problema tava nas chaves sei la. :D os outros valores aparecem?
lina

Oi,

Sua variável resultado é de que tipo: int ou double ?

As variáveis utilizadas para realizar o calculo da média são de quais tipos: int ou double?

Tchauzin!

charles.eduardo

Eu tambem acho que ta certoo if, mas por que nao aparece “Reprovado” se a variavel resultado é menor que 2 ???

fernandosavio

O bloco de código que você mostrou está certo!
Não é nenhum problema externo a esse bloco? Talvez a variável que você está testando na condição…

lina

Oi,

Olhem o código abaixo:

int peso = Integer.parseInt(JOptionPane.showInputDialog 
				("Digite peso pessoa: "));
		int altura = Integer.parseInt(JOptionPane.showInputDialog 
				("Digite altura pessoa: "));
		
			int massa = peso/(altura*altura);
	
		
			if (massa < 26){
				JOptionPane.showMessageDialog(null, "Normal.");
				}
				else {
				}
			if (massa > 25 & massa < 30){
				JOptionPane.showMessageDialog(null, "Obeso.");
				}
				else {
				}
			if (massa > 30){
				JOptionPane.showMessageDialog(null, "Obeso mórbido.");
				}
				else {
				}

Não entra em nenhuma condição dos IFs simplesmente porque o resultado do calculo não é um resultado inteiro.

Tchauzin!

charles.eduardo

São double vou colocar o o restante do codigo quem saiba o erro ta maior que eu imagino nao consegui localizar porque tambem ao meu ver o if era para funcionar.

private class TrataEventoBt implements ActionListener {

			@Override
			public void actionPerformed(ActionEvent e) {
				
				double resultado;
				
				resultadoNotas.setText(
						Double.toString(( resultado = 
								Double.parseDouble(nota1Field.getText())
								+ Double.parseDouble(nota2Field.getText()) 
								+ Double.parseDouble(nota3Field.getText()))/3));
				resultadoNotas.setVisible(true);
				
				/* * Além disto, a situação do aluno 
                                 * - "Aprovado" se a média for maior ou igual a 7, 
                                 * "Exame" se a média for maior ou igual a 2 e menor que 7 e 
                                 * "Reprovado" se a média for menor que 2 - 
                                 * deve ser apresentada em outro componente JLabel. */
				if(resultado >= 7) {
					resultadoStatus.setText("Aprovado");
				} else if(resultado >= 2 ) {
					resultadoStatus.setText("Exame");
				} else if(resultado < 2) {
					resultadoStatus.setText("Reprovado");
				}
			
			}					
	}
JhowTroMundo

Posta o código todo pra gente ver melhor xP

charles.eduardo

Ow nao vale rir da organização...

package cap2.exerc.e1;

import java.awt.Component;
import java.awt.Container;
import java.awt.Dimension;
import java.awt.FlowLayout;
import java.awt.LayoutManager;
import java.awt.event.ActionEvent;
import java.awt.event.ActionListener;

import javax.swing.JButton;
import javax.swing.JFrame;
import javax.swing.JLabel;
import javax.swing.JTextField;

public class GUICalculoDeMedia extends JFrame {
	

	private static final long serialVersionUID = 1L;
	JLabel nota1JLabel; // Label para a primeira nota
	JLabel nota2JLabel; // Label para a segunda nota
	JLabel nota3JLabel; // Label para a terceira nota
	JTextField nota1Field; // Campo de entrada para a primeira nota
	JTextField nota2Field; // Campo de entrada para a segunda nota
	JTextField nota3Field; // Campo de entrada para a terceira nota
	JButton btMedia; // Botao para calcular a media das notas
	JLabel resultadoNotas; // Label que retorna o resultado das medias
	JLabel resultadoStatus; // Label para status do aluno
	
	public GUICalculoDeMedia() {
		super("Calculo de Media");
		
		setLayout(new FlowLayout());
		
		//Primeiros
		nota1JLabel = new JLabel("Nota 1.:");
		nota1JLabel.setToolTipText("Referente a primeira nota do Aluno");
		add(nota1JLabel);
		
		nota1Field = new JTextField(4);
		add(nota1Field);
		
		//Segundos
		nota2JLabel = new JLabel("Nota 2.:");
		nota2JLabel.setToolTipText("Referente a segunda nota do Aluno");
		add(nota2JLabel);
		
		nota2Field = new JTextField(4);
		add(nota2Field);
		
		//Terceiros
		nota3JLabel = new JLabel("Nota 3.:");
		nota3JLabel.setToolTipText("Referente a primeira nota do Aluno");
		add(nota3JLabel);
		
		nota3Field = new JTextField(4);
		add(nota3Field);
		
		//Botao Calcular a media
		btMedia = new JButton("Calcular Média");
		add(btMedia);
		
		
		//Tratando o evento do botao
		TrataEventoBt tratarEvento = new TrataEventoBt();
		btMedia.addActionListener(tratarEvento);
		
		//Resposta da media
		resultadoNotas = new JLabel();
		add(resultadoNotas);
		resultadoNotas.setVisible(false);
		
		resultadoStatus = new JLabel();
		add(resultadoStatus);
	}
		
		private class TrataEventoBt implements ActionListener {

			@Override
			public void actionPerformed(ActionEvent e) {
				
				double resultado;
				
				resultadoNotas.setText(
						Double.toString(( resultado = 
								Double.parseDouble(nota1Field.getText())
								+ Double.parseDouble(nota2Field.getText()) 
								+ Double.parseDouble(nota3Field.getText()))/3));
				resultadoNotas.setVisible(true);
				
				/* * Além disto, a situação do aluno 
                                 * - ?Aprovado? se a média for maior ou igual a 7, 
                                * ?Exame? se a média for maior ou igual a 2 e menor que 7 e 
                                * ?Reprovado? se a média for menor que 2 - 
                                * deve ser apresentada em outro componente JLabel. */
				if(resultado >= 7) {
					resultadoStatus.setText("Aprovado");
				} else if(resultado < 7 & resultado >= 2 ) {
					resultadoStatus.setText("Exame");
				} else if(resultado < 2) {
					resultadoStatus.setText("Reprovado");
				}
			
			}
			
		
	}

}
charles.eduardo

Aqui o main.:

package cap2.exerc.e1;

import javax.swing.JFrame;


public class GUIExercicio1 {

	/**
	 * @param args
	 */
	public static void main(String[] args) {

		GUICalculoDeMedia guicalculoMedia = new GUICalculoDeMedia();
		guicalculoMedia.setDefaultCloseOperation(JFrame.EXIT_ON_CLOSE);
		guicalculoMedia.setSize(275, 280);
		guicalculoMedia.setVisible(true);
	}

}
lina

Oi,

Esta errado mesmo.

A opção /3 não deveria estar após aquele ‘)’

resultadoNotas.setText ( Double.toString ( ( resultado = (Double.parseDouble ( nota1Field.getText() ) + Double.parseDouble ( nota2Field.getText() ) + Double.parseDouble ( nota3Field.getText() ))/3 // Aqui sim. )/3 //Aqui não. ) );

Tchauzin!

charles.eduardo

É realmente o problema se encontrava nos parenteses como a lina falou, mais nao desloquei o /3 fiz isso com o resultado e funfou.

resultadoNotas.setText(
						Double.toString(resultado = ( 
								Double.parseDouble(nota1Field.getText())
								+ Double.parseDouble(nota2Field.getText()) 
								+ Double.parseDouble(nota3Field.getText()))/3));
				resultadoNotas.setVisible(true);

Eu tinha resolvido o problem assim, eliminando a variavel resultado;

if(Double.parseDouble(resultadoNotas.getText()) >= 7.0) { resultadoStatus.setText("Aprovado"); } else if((Double.parseDouble(resultadoNotas.getText()) < 7 && Double.parseDouble(resultadoNotas.getText()) >= 2 )) { resultadoStatus.setText("Exame"); } else { resultadoStatus.setText("Reprovado"); }

Obrigado a todos pela ajuda.

lina

charles.eduardo:
É realmente o problema se encontrava nos parenteses como a lina falou, mais nao desloquei o /3 fiz isso com o resultado e funfou.

resultadoNotas.setText(
						Double.toString(resultado = ( 
								Double.parseDouble(nota1Field.getText())
								+ Double.parseDouble(nota2Field.getText()) 
								+ Double.parseDouble(nota3Field.getText()))/3));
				resultadoNotas.setVisible(true);

Eu tinha resolvido o problem assim, eliminando a variavel resultado;

if(Double.parseDouble(resultadoNotas.getText()) >= 7.0) { resultadoStatus.setText("Aprovado"); } else if((Double.parseDouble(resultadoNotas.getText()) < 7 && Double.parseDouble(resultadoNotas.getText()) >= 2 )) { resultadoStatus.setText("Exame"); } else { resultadoStatus.setText("Reprovado"); }

Obrigado a todos pela ajuda.

Oi,

Pois é. Pode ser assim também… Show

Tchauzin!

Criado 1 de setembro de 2011
Ultima resposta 1 de set. de 2011
Respostas 15
Participantes 6