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

Não permitir inserção de letras em JAVA

Discussão em 'Programação' iniciada por luismca, 11 de Janeiro de 2009. (Respostas: 7; Visualizações: 2065)

  1. luismca

    luismca Power Member

    Boa noite pessoal

    Como fazer para não permitir (modo consola) o utilizador inserir letras, só digitos.
    Alguém sabe, agradeço a quem souber, é urgente.


    Cumprimentos e obrigado desde já
     
  2. ThatsMe

    ThatsMe [email protected] Member

    Estava aqui a magicar, mas a esta hora ja não sai grande coisa.

    Código:
    package exp_zwame;
    
    import java.util.Scanner;
    public class Main {
    
        public static void main(String[] args) {
           
            Scanner ler=new Scanner(System.in);
            int val,i;
            boolean teste=false;        
            int[]v=new int[10];
            
            do{System.out.println("Insira um valor numérico: ");
            
            val=ler.nextInt();
            int tmp;
    
            
            for(i=0;i>11;i++){
                
            v[i]=i;
                      
            if(val!=v[i]){
            
                teste=true;
            }
            }
            }while(teste=true);
            
    
    }
    
    }
    Este código tem um problema:

    1 - Caso o utilizador insira um valor não numérico isto crasha lol


    Desculpa lá que não estou com paciencia, mas faz tu isto:

    O valor que o utilizador vai dar, em vez de ser lido como integer, é lido como string ou char. E depois dentro do for, convertes o i para string ou char (penso que dá, não sei se através do parse ou de outra forma) e comparas. Caso o valor seja diferente de todos os i's percorridos no for, o programa tem que voltar a pedir o valor. Caso seja igual, segue. :)

    Espero ter ajudado.
     
  3. blueomega

    blueomega Power Member

    não basta deixar o utilizador inserir um numero não determinado de caracteres e vereficar depois se pode ser interpretado como double, int, float, string, etc, so não der como floar, int ou double pede pra inserir de novo?

    podes usar o hasNext(tipo) do Scanner
     
  4. d3baser

    d3baser Power Member

    Isso resolve-se com um try/catch, ou não?

    O problema é se o utilizador mete um numero não inteiro... Não seria melhor usar o nextDouble em vez do nextInt?
     
  5. AliFromCairo

    AliFromCairo Power Member

    Penso que o que pretendes fazer não é possível. No entanto, podes optar pelas soluções que já aqui apresentaram.
     
  6. Baderous

    Baderous Banido

    Tens de usar a InputMismatchException do Scanner:

    Código:
    import java.util.*;
    
    public class Main {
         public static int lerInt() {
         Scanner input = new Scanner(System.in);
         boolean ok = false; 
         int i = 0; 
         while(!ok) {
             try {
                 i = input.nextInt();
                 ok = true;
             }
             catch(InputMismatchException e) 
                 { System.out.println("Inteiro Inválido"); 
                   System.out.print("Novo valor: ");
                   input.nextLine(); 
                 }
         }
         input.close();
         return i;
      } 
      
        public static void main(String[] args) {
            System.out.println("Insira um digito: ");
            int x = lerInt();
            System.out.println(x);
        }
    }
     
  7. luismca

    luismca Power Member

    O problema é que o programa já tá todo feito, estava à espera de fazer isso com try catch, não existe nenhuma excepção para lidar com isso?
     
  8. blueomega

    blueomega Power Member

    os digitos em cada ocorrencia de imput so podem vir no formato double, int, float ou outro? ha um formato defenido em cada imput? se for so um tipo restringe

    tive a ver o manual do scanner e no scanner ha o findinline onde lhe passas uma Pattern

    nas paterns tem
    \d A digit: [0-9]
    X* X, zero or more times
    X+ X, one or more times
    x The character x

    assumo que dê pra fazer um fsm que trate de inteiros e decimais
     

Partilhar esta Página