1. Este site usa cookies. Ao continuar a usar este site está a concordar com o nosso uso de cookies. Saber Mais.

[Java] Ajuda a verificar se é numero

Discussão em 'Programação' iniciada por Sky_Boy_, 4 de Março de 2008. (Respostas: 15; Visualizações: 5578)

  1. Sky_Boy_

    Sky_Boy_ Power Member

    Boas ppl...

    Tou aqui com uma dificuldade neste prog...espero que alguem me possa ajudar..... o k kero verificar e se ao introduzir um codigo postal, os 4 caracteres a eskerda do hifen e os 3 a direita sao numeros.....

    Obrigado desde ja a tods os que puderem ajudar

    while(cp.length() != 8){
    System.out.println("Código Postal: ");

    try{
    cp = teclado.readLine().trim();
    }
    catch(IOException ioe) {
    System.err.println("Erro ao ler o teclado");
    }
    if (cp.length() == 8) {
    if (cp.charAt(4) == '-') {
    System.out.println("Temos hifen");
    }
    else{
    cp="";
    }
    }

    for(n=0; n<=3; n++){

    if (cp.charAt(n) != isNumeric ) {
    System.out.println("Introduza apenas caracteres numericos");
    }

    /*TODO: verificar se as restantes posições de
    * código postal são algarismos...
    */

    }
    }


    (Eu sei k isso ta mal mas colokei o isNumeric pa n m eskecer do k tenho de fazer.... :S)

    Cumps
     
  2. m00s

    m00s Power Member

    nao sei se há alguma função pra isso mas podes fazer a verificao deste modo:

    (cp.charAt(n) >= '0' && cp.charAt(n) <= '9')

    ...atenção, não sei se o operador é &&.


    cump's
     
  3. Mavors

    Mavors Power Member

    O operador é &&, mas estás é fazer uma condição de uma String com outra String, e ela não sabe o valor numérico, portanto não te vai retornar grande coisa.

    Mas podes fazer assim:

    if(Character.isDigit(cp.charAt(n)))
    System.out.println("Está tudo ok");
    else
    System.out.println("Introduza apenas caracteres numericos");

    ou podes usar a library de RegEx.
     
  4. reise

    reise Power Member

    Faz um parseInt e apanha a excepção NumberFormatException



    Código:
    
    String num_str = cp.substring(0,3)
    
    try {
    Integer.parseInt(num_str);
    } catch (NumberFormatException ex) {
    System.out.println("Not a number");
    }
    
     
  5. Usa expressões regulares que é o mais simples nesta situação. :)
     
  6. rj.rodrigues

    rj.rodrigues Power Member

    Código:
    boolean cpValido = true;
    
    do{
    	System.out.println("Código Postal: ");
    	try{
    		cp = teclado.readLine().trim();
    	}
    	catch(IOException ioe) {
    		System.err.println("Erro ao ler o teclado");
    	}
    }while(cp.length() != 8);
    
    if (cp.charAt(4) != '-') {
    	System.out.println("Não foi encontrado hifen");
    	cp="";
    	cpValido = false;
    }
    		
    for(n=0; cpValido && n<=3 ; n++){
    	if (cp.charAt(n) <= '0' && cp.charAt(n) >= '9') {
    		System.out.println("Introduza apenas caracteres numericos");
    		cpValido = false;
    	}
    }
    			
    for(n=5 ; cpValido && n<=8 ; n++){
    	if (cp.charAt(n) <= '0' && cp.charAt(n) >= '9') {
    		System.out.println("Introduza apenas caracteres numericos");
    		cpValido = false;
    	}
    }
    
    
    ps: usa a tag ["code"]["/code"] (sem "")
     
  7. arkannis

    arkannis Power Member

    Wise post :x2:


    Como substituir esses km de linha que aí puseram por uma só! :

    Código:
    //codPostal é a String com o codigo postal
    boolean match = codPostal.matches("(\\d{4}-\\d{3})");
    Sim, é só isto! :D
     
    Última edição: 4 de Março de 2008
  8. reise

    reise Power Member

    Por acaso não me lembrei de expressões regulares! Muito bem.
    Já em muitas vezes me pouparam resmas de código.
     
  9. Sky_Boy_

    Sky_Boy_ Power Member

    boolean cpValido = true;

    do{
    System.out.println("Código Postal: ");
    try{
    cp = teclado.readLine().trim();
    }
    catch(IOException ioe) {
    System.err.println("Erro ao ler o teclado");
    }
    }
    while(cp.length() != 8);

    if (cp.charAt(4) != '-') {
    System.out.println("Não foi encontrado hifen");
    cp="";
    cpValido = false;
    }

    for(n=0; cpValido && n<=3 ; n++){
    if (!(cp.charAt(n) <= '0' && cp.charAt(n) >= '9')) {
    System.out.println("Introduza apenas caracteres numericos");
    cpValido = false;
    }

    }

    for(n=5 ; cpValido && n<=7 ; n++){
    if (!(cp.charAt(n) <= '0' && cp.charAt(n) >= '9')) {
    System.out.println("Introduza apenas caracteres numericos");
    cpValido = false;


    }
    }

    Ele assim faz o k eu kero...o problema e que nao consigo ke ele volte a pedir o cod postal, avançando logo para a localidade.....

    obgd dd ja a tds pela ajuda
     
  10. reise

    reise Power Member

    não achas mais fácil assim?
    Código:
    do{
      System.out.println("Código Postal: ");
      try{
          cp = teclado.readLine().trim();
         } catch(IOException ioe) {
             System.err.println("Erro ao ler o teclado");
         }
    }
    while(cp.length() != 8);
            
    boolean cpValido = cp.matches("(\\d{4}-\\d{3})");
    Quanto à outra dúvida não percebi o que queres fazer.
     
  11. Sky_Boy_

    Sky_Boy_ Power Member

    é assim eu kero k ele kando ñ introduzo correctamente o código postal me volte a pedir para o introduzir...
     
  12. Sky_Boy_

    Sky_Boy_ Power Member



    Corrige-me se estiver em erro....mas essa condição nao reconhece se se introduz numeros ou letras.... por exemplo.... se introduzir aaaa-aaa ou 1111-111 ele corre na mm...
     
  13. Sky_Boy_

    Sky_Boy_ Power Member

    pois mas o meu prob e k mm ke eu insira AAAA-AAA ele passa a frente....n devia :S
     
  14. arkannis

    arkannis Power Member

    Epá, eu testei a expressao regular que ali pus e funcionou para todos os casos possiveis!
    Já agora, não estou a perceber bem para que é que queres esse codigo todo para ler do teclado.

    Olha aqui a sugestao muito mais simples e bonita:

    Código:
    String codPostal = "";
    Scanner sc = new Scanner(System.in);
    do {[INDENT]System.out.print("Insira o código postal: ");
    codPostal = sc.nextLine();
    [/INDENT]} while(!codPostal.matches("(\\d{4}-\\d{3})"));
    
    Tenho quase a certeza que isto faz tudo o que tu queres.
     
  15. Sky_Boy_

    Sky_Boy_ Power Member

    Qd vieres a coimbra pago-te um copo xD

    Problema resolvido

    Obgd a todos
     

Partilhar esta Página