[RESOLVIDO]Problema com Formato int

Galera estou com problema no formato do meu int.

Quando eu vó inserir ,ele me da esse erro de formato :
Meu banco estar int.

 java.lang.NumberFormatException: For input string: "(12)1212-1212"

aqui esta a inserção do meu botão salvar, pq que o erro vai para a linha dele
Estou usando um campo formatado do netbens.

 int telefone =  Integer.parseInt(jFTelefone.getText());

Se alguém souber em como eu resolver isto eu agradeço.

Primeira não use int para armazenar um número de telefone.
Então use String e teu problema estará resolvido. Mas busque saber pq vc não pode armazenar esse formato de telefone num int.

Eu já usei string para armazenar e não tem problemas.

Mas só que na minha documentação eu coloquei int.

E não estou conseguindo inserir essa formatação, e já pesquisei e não achei nada parecido.

Espero que alguém me ajude.

[quote=junio103]Eu já usei string para armazenar e não tem problemas.

Mas só que na minha documentação eu coloquei int.

E não estou conseguindo inserir essa formatação, e já pesquisei e não achei nada parecido.

Espero que alguém me ajude.[/quote]

ok, mas mudar a documentação é tão difícil assim ou manter o int é uma obrigação da sua lógica de negócio?

Mas não tem solução não neh?

já pesquisei bastante e não achei.

[quote=junio103]Mas não tem solução não neh?

já pesquisei bastante e não achei.[/quote]

Acho então que se vc não mudar, pelo menos seu int para long, vc dançou.
Se for mudar, muda pra string.

ai vai precisar de uma função pra tirar estes caracteres não numéricos.

Lol, usar int para armazenar () e - xD
Não é possível para você modificar o tipo da variável? De nenhuma forma?
Já ouvi falar de alguns códigos que transformam de String para Int, mas de Int para de String acho que é impossível, nem com (String)…
Boa sorte.

[quote=Luiz Augusto Prado]
Acho então que se vc não mudar, pelo menos seu int para long, vc dançou.
Se for mudar, muda pra string.

ai vai precisar de uma função pra tirar estes caracteres não numéricos. [/quote]

Além desse método ele também não pode esquecer que números inteiros/longos tanto em base de dados como no Java não armazenam o zero na frente do número como em: (011) 1234-5678, mesmo convertendo ele “trunca o zero” ficando assim: 1112345678, número feio pra guardar não é mesmo?

[quote=Vynko]Lol, usar int para armazenar () e - xD
Não é possível para você modificar o tipo da variável? De nenhuma forma?
Já ouvi falar de alguns códigos que transformam de String para Int, mas de Int para de String acho que é impossível, nem com (String)…
Boa sorte.[/quote]

não entendi o que quis dizer… foi isso?

int inteiro = 100001;
String strings = “”+ inteiro;

//para inteiro:
int qt = Integer.parseInt( minhaStringComApenasNumeros );

fica atento… minhaStringComApenasNumeros tem que ser um valor entre -2,147,483,648 e +2,147,483,647 !

Não, quando usamos (tipo) o java adapta à o tipo falado, mas em alguns casos não funciona…

Um exemplo de uso:

double janeiro=10,99;
double fevereiro=20,99;
int total=(int)janeiro+fevereiro/2

Isso torna o valor de janeiro+fevereiro/2 uma valor inteiro.

OBS: Quanto o parseInt, nunca utilizei, então não sei dizer se esse é o código mesmo, teste ai! :slight_smile:

Então resolvido.

Deixar com String mesmo, se não vai me dar problemas.

Obrigado pessoal.

Tópico resolvido, mas só pra deixar claro:

[quote=Vynko]Não, quando usamos (tipo) o java adapta à o tipo falado, mas em alguns casos não funciona…

Um exemplo de uso:

double janeiro=10,99;
double fevereiro=20,99;
int total=(int)janeiro+fevereiro/2

Isso torna o valor de janeiro+fevereiro/2 uma valor inteiro.

OBS: Quanto o parseInt, nunca utilizei, então não sei dizer se esse é o código mesmo, teste ai! :)[/quote]

Nesse caso você forçou o valor para total ser inteiro, e o Java não converte valores pra você ou seja, um número inteiro divido por outro inteiro retorna um inteiro.

Seu exemplo causou um erro de lógica, pois se você quiser um valor do tipo double, deveria declarar o total como tipo double:

double janeiro = 10.99;  // além do mais o valor que estava antes aqui nem compilaria (10,99)
double fevereiro = 20.99;  // a mesma coisa aqui (20,99)
double total = (janeiro + fevereiro) / 2; // aqui () são importantes

Atente-se também ao () que adicionei no seu cálculo, do jeito que estava o resultado seria a divisão de fevereiro por 2, depois a soma desse resultado por janeiro e o resultado final seria 21.485 e não 15.99 como esperado.

Já quanto ao parseInt(), é um método que converte String’s com representações numéricas apenas, ex “123”, agora qualquer caractere diferente de um número como um simples espaço gera erro: ex “12 3”.

Foi o que aconteceu com o junio103 e provavelmente achou que o parseInt() retirava qualquer caractere deixando apenas os números, mas isso ele não faz.

Sim, eu não pus o () para não confundir o nosso amigo, mas o valor retornaria um double se não usássemos (int), pois como pode ver, a variável janeiro e fevereiro são doubles, (10.99+10.99)/2
Então usamos o (int) para adaptá-lo à um número inteiro. Se não me engano, eu aprendi isso em um exercício da apostila de OO da Caelum, o código;

package exercise;
class Gasto{
	public static void main(String[] args){
		double janeiro=15000.99;
		double fevereiro=23000.99;
		double marco=17000.99;
		double total=janeiro+fevereiro+marco;
		int media=(int)total/3;
		System.out.println("Janeiro: "+janeiro+
				"\nFevereiro: "+fevereiro+
				"\nMarço: "+marco+
				"\nTotal: "+total+
				"\nMédia aritmética mensal: "+media);
	}
}

Retornaria:

Janeiro: 15000.99
Fevereiro: 23000.99
Março: 17000.99
Total: 55002.97
Média aritmética mensal: 18334

[quote=Vynko]Sim, eu não pus o () para não confundir o nosso amigo, mas o valor retornaria um double se não usássemos (int), pois como pode ver, a variável janeiro e fevereiro são doubles, (10.99+10.99)/2
Então usamos o (int) para adaptá-lo à um número inteiro. Se não me engano, eu aprendi isso em um exercício da apostila de OO da Caelum, o código;

package exercise;
class Gasto{
	public static void main(String[] args){
		double janeiro=15000.99;
		double fevereiro=23000.99;
		double marco=17000.99;
		double total=janeiro+fevereiro+marco;
		int media=(int)total/3;
		System.out.println("Janeiro: "+janeiro+
				"\nFevereiro: "+fevereiro+
				"\nMarço: "+marco+
				"\nTotal: "+total+
				"\nMédia aritmética mensal: "+media);
	}
}

Retornaria:

Janeiro: 15000.99
Fevereiro: 23000.99
Março: 17000.99
Total: 55002.97
Média aritmética mensal: 18334
[/quote]

Se você está ciente dos riscos… Ah bom, então assim sim… kkkk