Ajuda com .matches

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.

[code]

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);


} 

}

 [/code]

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.

if (! string.matches("^[0-9]+$")) {
System.out.println(“String não é um número”);
}

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