Verificacao de preenchimento

13 respostas
rosawestphal

preciso verificar se um jTextField esta preenchido com um float e se estiver ele realiza o restante do codigo…

float psatotal = Float.valueOf(jTFPSATotal.getText());

try {
        Float.parseFloat(psatotal);
    } catch (NumberFormatException ex) {
        JOptionPane.showMessageDialog(null, "Voce nao digitou um numero");   
        System.exit(0);  
        ex.printStackTrace();
    }

fiz desta forma e nao funcionou…
Por favor me ajudem…

13 Respostas

andredeividi

Assim deve dar.

import java.util.Scanner;

public class Main {

	
	public static void main(String[] args) {
		funcaoRecursiva();
	}

	
private static  float valor=0;

	private static void funcaoRecursiva(){
		try{
			Scanner dados = new Scanner(System.in);
			System.out.println("Digite o valor");
			valor=  dados.nextFloat();
		}catch(Exception e){
			System.out.print("Vc não digitou um numero");
			funcaoRecursiva();
		}
	}
}
felipealbuquerque

Primeiro crie um código para encapsular a validação, pois, assim, você pode utilizá-lo em outros lugares sem repetir o código. Depois, é só chamá-lo. Segue o exemplo:

/* Validação de Float */
public boolean isFloat(String string) {
    
    try {
        Float.parseFloat(string);
        return true;
    } catch (NumberFormatException numberFormatException) {
        return false;
    }

}


/* Chamada */
if (isFloat(jTextField.getText())) {
    // lançar a exception
}
rosawestphal

oi tentei fazer os codigos que vocês me ensinaram mas nao esta dando certo abaixo como fiz:

private boolean isFloat(String string) {

try {

Float.parseFloat(string);

return true;

} catch (NumberFormatException numberFormatException) {

return false;

}
}
na chamada:

if(isFloat(jTFPSATotal.getText())){

try{

float probHibridoCancer = ((probPTCancer)/(pertPsaTotal));

<a href="//jTFCancer.setText">//jTFCancer.setText</a>(String.valueOf(round2(probHibridoCancer, 3)));

<a href="//System.out.println">//System.out.println</a>("\n A probabilidade de ter cancer de prostata eh" + probHibridoCancer);
float probHibridoHpb =((probPTHpb)/(pertPsaTotal));
                //jTFHPB.setText(String.valueOf(round2(probHibridoHpb, 3)));
                //System.out.println("\n A probabilidade de ter cancer de prostata eh" + probHibridoHpb);
                
                float teste[] =  new float[2];
                teste[0] = probHibridoCancer;
                teste[1] = probHibridoHpb;
                System.out.println(teste[0]);
                System.out.println(teste[1]);
                Node node = net.getNode("DOENCAS");
                node.setCPTable(teste);
            } catch (NumberFormatException ey) {
                JOptionPane.showMessageDialog(null, "Voce digitou um numero errado, favor rever!!");
                ey.printStackTrace();
            }
            }
andredeividi
if (isFloat(jTFPSATotal.getText())) {
			
				float probHibridoCancer = ((probPTCancer) / (pertPsaTotal));
				// jTFCancer.setText(String.valueOf(round2(probHibridoCancer,
				// 3)));
				// System.out.println("\n A probabilidade de ter cancer de
				// prostata eh" + probHibridoCancer);

				float probHibridoHpb = ((probPTHpb) / (pertPsaTotal));
				// jTFHPB.setText(String.valueOf(round2(probHibridoHpb, 3)));
				// System.out.println("\n A probabilidade de ter cancer de
				// prostata eh" + probHibridoHpb);

				float teste[] = new float[2];
				teste[0] = probHibridoCancer;
				teste[1] = probHibridoHpb;
				System.out.println(teste[0]);
				System.out.println(teste[1]);
				Node node = net.getNode("DOENCAS");
				node.setCPTable(teste);
			
		}else{
			JOptionPane.showMessageDialog(null, "Voce digitou um numero errado, favor rever!!"); 
		}
rosawestphal

não estou conseguindo ainda, ele nao mostra a mensagem e da erro no codigo…

andredeividi

qual é o erro?

coloca seu codigo novamente.

rosawestphal

este é o erro:
Exception in thread "AWT-EventQueue-0" java.lang.NumberFormatException: For input string: "2,6"
at sun.misc.FloatingDecimal.readJavaFormatString(FloatingDecimal.java:1224)

o codigo:

private boolean isFloat(float x) {

try {

Float.parseFloat(string);

return true;

} catch (NumberFormatException numberFormatException) {

return false;

}
}
a chamada:

if((isFloat(psatotal))&&(isFloat(densidade))){

if ( psatotal <= a){

grauTotalMenor = 1f;

jTFResPTMe.setText(String.valueOf(round2(grauTotalMenor, 3)));

System.out.println("\n A probabilidade de ter HPB eh" + grauTotalMenor);

} else if ((a < psatotal ) && (psatotal < b)){

grauTotalMenor = (((b - psatotal) / (b - a)))*100;

jTFResPTMe.setText(String.valueOf(round2(grauTotalMenor, 3)));

System.out.println("\n A probabilidade de ter PSA eh" + grauTotalMenor);

} else if (psatotal >= b){

grauTotalMenor = 0f ;

jTFResPTMe.setText(String.valueOf(round2(grauTotalMenor, 3)));

}
mais codigo ainda....
        
    } else{
        JOptionPane.showMessageDialog(null, "Voce digitou um numero errado, favor rever!!");
    }
andredeividi

Amiga edit seu post e selecione o seu codigo e coloque a tag CODE logo acima
como na imagem

if (){ }else{ }

Fica melhor para leitura.

rosawestphal

este é o erro:
Exception in thread "AWT-EventQueue-0" java.lang.NumberFormatException: For input string: "2,6"
at sun.misc.FloatingDecimal.readJavaFormatString(FloatingDecimal.java:1224)

private boolean isFloat(float x) { 
try { 
Float.parseFloat(string); 
return true; 
} catch (NumberFormatException numberFormatException) { 
return false; 
} 

} 

a chamada:
if((isFloat(psatotal))&&(isFloat(densidade))){ if ( psatotal <= a){ grauTotalMenor = 1f; jTFResPTMe.setText(String.valueOf(round2(grauTotalMenor, 3))); System.out.println("\n A probabilidade de ter HPB eh" + grauTotalMenor); } else if ((a < psatotal ) && (psatotal < b)){ grauTotalMenor = (((b - psatotal) / (b - a)))*100; jTFResPTMe.setText(String.valueOf(round2(grauTotalMenor, 3))); System.out.println("\n A probabilidade de ter PSA eh" + grauTotalMenor); } else if (psatotal >= b){ grauTotalMenor = 0f ; jTFResPTMe.setText(String.valueOf(round2(grauTotalMenor, 3))); }

mais codigo ainda....

} else{
JOptionPane.showMessageDialog(null, "Voce digitou um numero errado, favor rever!!";
}

rosawestphal

este é o erro:
Exception in thread "AWT-EventQueue-0" java.lang.NumberFormatException: For input string: "2,6"
at sun.misc.FloatingDecimal.readJavaFormatString(FloatingDecimal.java:1224)

private boolean isFloat(float x) {   
try {   
Float.parseFloat(string);   
return true;   
} catch (NumberFormatException numberFormatException) {   
return false;   
}   
  
}   
  
a chamada: 
if((isFloat(psatotal))&&(isFloat(densidade))){ 
if ( psatotal <= a){ 
grauTotalMenor = 1f; 
jTFResPTMe.setText(String.valueOf(round2(grauTotalMenor, 3))); 
System.out.println("\n A probabilidade de ter HPB eh" + grauTotalMenor); 
} else if ((a < psatotal ) && (psatotal < b)){ 
grauTotalMenor = (((b - psatotal) / (b - a)))*100; 
jTFResPTMe.setText(String.valueOf(round2(grauTotalMenor, 3))); 
System.out.println("\n A probabilidade de ter PSA eh" + grauTotalMenor); 
} else if (psatotal >= b){ 
grauTotalMenor = 0f ; 
jTFResPTMe.setText(String.valueOf(round2(grauTotalMenor, 3))); 
} 

mais codigo ainda.... 

} else{ 
JOptionPane.showMessageDialog(null, "Voce digitou um numero errado, favor rever!!"; 
}
andredeividi

O valor que vc esta colocando é “2,6” tente 2.6
ponto e não virgula.

rosawestphal

mas é essa a intenção se o usuario colocar , aparece uma janela dizendo que somente aceita numeros com ponto…

andredeividi

Agora acho que vai

if (isFloat("1,3")) {
			JOptionPane.showMessageDialog(null,
			"Voce digitou um numero");
			//float probHibridoCancer = ((probPTCancer) / (pertPsaTotal));
			// jTFCancer.setText(String.valueOf(round2(probHibridoCancer, 3)));
			// System.out.println("\n A probabilidade de ter cancer de prostata
			// eh" +
			// probHibridoCancer);

		//	float probHibridoHpb = ((probPTHpb) / (pertPsaTotal));
			// jTFHPB.setText(String.valueOf(round2(probHibridoHpb, 3)));
			// System.out.println("\n A probabilidade de ter cancer de prostata
			// eh" +
			// probHibridoHpb);

			/*
			 * float teste[] = new float[2]; teste[0] = probHibridoCancer;
			 * teste[1] = probHibridoHpb; System.out.println(teste[0]);
			 * System.out.println(teste[1]); Node node = net.getNode("DOENCAS");
			 * node.setCPTable(teste);
			 */

		} else {
			JOptionPane.showMessageDialog(null,
					"Voce digitou um numero errado, favor rever!!");
		}

	}

	public static boolean isFloat(String string) {
		try {
			Float.parseFloat(string);
			return true;
		} catch (NumberFormatException numberFormatException) {
			return false;
		}

	}
Criado 27 de novembro de 2007
Ultima resposta 29 de nov. de 2007
Respostas 13
Participantes 3