Ajuda com .matches

3 respostas
Jorge_Michael

Estou fazendo um exercício que preciso saber se o que estou digitando são números, caso tenha alguma letra digitada ele da a mensagem de erro.
só que se eu digito varias letras ele da erro, mais se eu digito varias letras e um numero no meio ou final ele fala que é numero, alguém poderia me dar uma luz onde estou errado, tenho pouco noção de java ainda.

package javaapplication2;

import java.util.Scanner;

public class JavaApplication2 {

    public static void main(String[] args) {

        String letras;  /* declarando uma string */
        letras = null;  /* string vazia */
        int num;        /* declarando uma variavel inteira */
        num = 0;
        Scanner entrada = new Scanner (System.in);
        do {
        System.out.println("Entre com um caractere que seja Numero: ");
        letras = entrada.nextLine();
        if (letras.matches("[a-z A-Z Çç]{"+letras.length()+"}")) {
        System.out.println("Caractere Inválido, é uma letra!");
        num=1;
        }
        else {
        System.out.println("É um número!");
        num=0;
        }
        }while(num!=0);


    } 
        
        
}

3 Respostas

fabiobp2000

Cara deu trabalho achar isso, rsrs;

Achei aqui
http://pt.wikipedia.org/wiki/Express%C3%A3o_regular

fiz assim

import java.util.Scanner;
import java.util.regex.Matcher;
import java.util.regex.Pattern;

public class JavaApplication2 {
	
	public static void main(String[] args) {  
		  
        String letras;  /* declarando uma string */  
        int num =0;        /* declarando uma variavel inteira */  
        Scanner entrada = new Scanner (System.in);  
        do {  
        System.out.println("Entre com um caractere que seja Numero: ");  
        letras = entrada.nextLine();  
        Pattern pat = Pattern.compile("\\D");
        Matcher mat = pat.matcher(letras);
        
        if (mat.find()) {  
        System.out.println("Caractere Inválido, é uma letra!");  
        num=1;  
        }  
        else {  
        System.out.println("É um número!");  
        num=0;  
        }  
        }while(num!=0);  
    
    }  
}

O foda é que se dou Enter ele acha que é numero.

B
if (! string.matches("^[0-9]+$")) {

System.out.println(String não é um número);

}
Jorge_Michael

Caros colegas, agradeço foi muito util.
agora esta funcionando perfeitamente.

Criado 1 de março de 2013
Ultima resposta 4 de mar. de 2013
Respostas 3
Participantes 3