Erro em conversao de variavel String [RESOLVIDO]

8 respostas
paulomn
bom a funcao aki é percorrer um jformattedtextfield e pegar somente os numeros dele:
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);
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]

8 Respostas

E

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)

A

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.

paulomn

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

paulomn

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.

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: “[telefone removido]”[/color]

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 ( 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.

paulomn

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 ([telefone removido], 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.

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.

Preco

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:

paulomn

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

Criado 30 de junho de 2010
Ultima resposta 30 de jun. de 2010
Respostas 8
Participantes 4