Como aceitar que sejam digitados somente valores númericos ou somente letras em uma variavel?

6 respostas
leandro318

Olá galera.
Estou precisando preencher um formulario. E tenho que solucionar esses dois problemas:
1º variavel do tipo string em que o usuario terá que digitar seu nome, caso o usuario digite um valor numerico ou dê enter sem digitar nada ou digite qualquer outro tipo de carater, o programa peça novamente para o usuario digitar o nome e só saia disso quando for digitado alguma sequencia de letras. A entrada de dados está assim:

nome[posicao] = JOptionPane.showInputDialog ("Digite o nome do locatário")

2º variavel do tipo int em que o usuario terá que digitar a quantidade de pessoas que moram com ele, mas caso o usuario digite outro tipo de caracter que não seja numerico, o programa peça novamente para o usuario digitar um valor numerico e só saia disso quando for digitado um valor valido. A entrada de dados está assim:

numPessoas[posicao] = Integer.parseInt (JOptionPane.showInputDialog ("Digite o numero de pessoas"));

O que devo colocar nessas entradas de dados para fazer essas verificações e evitar que o programa dê erros quando for digitado outros caracteres diferentes do pedido?
Desde já obrigado pela atenção.

6 Respostas

Andre_Fonseca

oi,

public static boolean isAlphanumericSpace(String str) { if (str == null) { return false; } int sz = str.length(); for (int i = 0; i < sz; i++) { if ((Character.isLetterOrDigit(str.charAt(i)) == false) && (str.charAt(i) != ' ')) { return false; } } return true; }

http://www.java2s.com/Code/Java/Development-Class/ChecksiftheStringcontainsonlyunicodelettersdigitsorspace.htm

Andre_Fonseca

oi,

Edit: desculpe, postei errado

public static boolean ehLetraOuDigito(String str) { if (str == null) { return false; } int sz = str.length(); for (int i = 0; i < sz; i++) { if ((!Character.isLetterOrDigit(str.charAt(i)))) { return false; } } return true; }
o primeiro caracteres encontrado que não for letra ou digito retorna falso no método, caso nenhum seja encontrado retorna verdadeiro…

leandro318

André Fonseca:
oi,

public static boolean isAlphanumericSpace(String str) { if (str == null) { return false; } int sz = str.length(); for (int i = 0; i < sz; i++) { if ((Character.isLetterOrDigit(str.charAt(i)) == false) && (str.charAt(i) != ' ')) { return false; } } return true; }

http://www.java2s.com/Code/Java/Development-Class/ChecksiftheStringcontainsonlyunicodelettersdigitsorspace.htm

tem que colocar tudo isso? num tem uma forma mais simples não? já vi um comando que tinha que colocar “equals” e algo depois, acho que ele fazia isso que estou querendo fazer, o problema é que esqueci a sintaxe.

gaulix
public static void main(String[] args) {
        String aux;
        boolean soLetras;
        do {//verificaçao para ver se tem somente letras
            aux = JOptionPane.showInputDialog("Digite o nome do laboratório");
            soLetras = true;
            if (!aux.matches("^[a-zA-Z]+$")) {
                soLetras = false;
            }

        } while (!soLetras);
        System.out.println(aux);
        //armazene o aux no seu array de nomes
        boolean soNumeros;
        do {//verificaçao para ver se tem somente numeros
            aux = JOptionPane.showInputDialog("Digite o número de pessoas");
            soNumeros = true;
            if (!aux.matches("\\d+")) {
                soNumeros = false;
            }
        } while (!soNumeros);
        System.out.println(aux);
        //armazene o aux no seu array de numero de pessoas
    }
Andre_Fonseca

oi,

Desculpe, postei errado, veja minha ultima resposta

Voce tem que percorrer a string caractere a caractere e validar cada um deles…

PS: como o amigo anterior falou também pode usar expressões regulares para validar a String…

abs

leandro318

tô querendo mesmo uma forma mais simples pra fazer isso, por que o codigo do programa já está muito grande, ai não queria adicionar esse tanto de linhas de comando só pra fazer isso.
Ouvi em um comando que faz isso ou coisa parecida é um tal equals, alguém ai sabe como usa ele e se com ele pode ser feito isso?

Criado 1 de dezembro de 2012
Ultima resposta 3 de dez. de 2012
Respostas 6
Participantes 3