Erro em conversao de variavel String [RESOLVIDO]

bom a funcao aki é percorrer um jformattedtextfield e pegar somente os numeros dele:

[code] String texto = Telas.Menu.telefone.getText(); //pega tudo que estiver no campo
String aux = “”;
for (int i = 0; i < texto.length(); i++) {

        if (Character.isDigit(texto.charAt(i)) == true){
            aux = aux+texto.charAt(i); //quando encontra um numero coloca na string aux
        }
      }
     String aux2 = aux;
     int telefone = Integer.parseInt(aux2); //converte para int a string aux2 que só tem numeros
     System.out.println(telefone);[/code]

ele esta acusando o seguinte erro na linha 10 acima e eu nao entendo pq…
[color=red]Exception in thread "AWT-EventQueue-0" java.lang.NumberFormatException:[/color]

Se aux2 for vazio (por algum motivo) você também vai receber a NumberFormatException. Veja qual é o valor de aux2 (argh, que nome horrível)

paulomn, o erro provavelmente vai estar quando você chama Telas.Menu.telefone.getText().
Faça o mesmo teste que eu e veja o resultado.

ao invés de:

String texto = Telas.Menu.telefone.getText();

coloque:

String texto = "a21a54s85a4s54a84s";

e veja que ele traz os valores corretos.

mais o problema é que ele nao fika vazio, e como é formatted so fikam numeros no campo, e o nome é provisorio, so pra teste :smiley:

[quote=andre.froes]paulomn, o erro provavelmente vai estar quando você chama Telas.Menu.telefone.getText().
Faça o mesmo teste que eu e veja o resultado.

ao invés de:

String texto = Telas.Menu.telefone.getText();

coloque:

String texto = "a21a54s85a4s54a84s";

e veja que ele traz os valores corretos.[/quote]

que estranho, sempre usei o getText() e ele sempre funcionou direito, :shock: nem com .toString() funcionou :?

troquei como voce falou e deu erro
[color=red]Exception in thread “AWT-EventQueue-0” java.lang.NumberFormatException: For input string: “21548545484”[/color]

É porque o valor máximo que você pode armazenar em uma variável do tipo int é 2.147.483.647. Se você tentar fazer parse num número maior que esse, acontecerá o ParseException.

Por exemplo, se eu tentar rodar seu programa com o número ( 11 ) 9999-9999 dá certinho, com ( 48 ) 9999-9999, vai dar pau =/

Verifique se há mesmo a necessidade de armazenar este valor como um número. Se houver, armazene numa variável com maior capacidade, como double.

[quote=Preco]É porque o valor máximo que você pode armazenar em uma variável do tipo int é 2.147.483.647. Se você tentar fazer parse num número maior que esse, acontecerá o ParseException.

Por exemplo, se eu tentar rodar seu programa com o número (48) 9999-9999, vai dar pau =/

Verifique se há mesmo a necessidade de armazenar este valor como um número. Se houver, armazene numa variável com maior capacidade, como double.[/quote]

putz é verdade, eu nem percebi, pq como sao numeros de telefone com 10 digitos, e o codigo aki do ms é 67, eu estava colokando toda hora 67 e nem perebi que ia alem do que a cabe na variavel, :shock: vlw, vou fazer com variavel do tipo long.

Eheh… Ainda bem que você mora em um lugar com código de área maior que 21, senão não teria identificado o erro :stuck_out_tongue:

se for um sistema grande e o cara nao lembra disso, da muito problema depois haha :smiley: