Bom dia, Estou com um problema e gostaria de uma ajuda.
o Meu problema está na hora de salvar os dados enviados do formulario, pois peguei um script que coloca as mascaras de formataçao mais quero salvar no banco sem elas , e os valores tem q ser inteiros entao
estou usando esse codigo para tirar as mascaras.
public static String Mask(String cpf){
String str = cpf;
while(str.indexOf("-")!= -1){
if(str.indexOf("-")!=0){
str = str.substring(0, str.indexOf("-"))+
str.substring(str.indexOf("-")+1);
}
else{
str = str.substring(str.indexOf("-")+1);
}
}
while (str.indexOf(".")!= -1){
if (str.indexOf(".")!=0){
str =str.substring(0,str.indexOf("."))+
str.substring(str.indexOf(".")+1);
}
else{
str = str.substring(str.indexOf(".")+1);
}
}
return str;
}
o codigo funciona direitinho, mais eu tenho q pegar esse retorno str e trasforma em inteiro para poder
salvar no bd.
e quando vou fazer isso usando usando int i = Integer.parseInt(str);
e retornado esse erro
Exception in thread “main” java.lang.NumberFormatException: For input string: “11122233305”
agora o mais interessante, é que se o valor tive menos de 9 digitos eu consigo fazer essa
trasformacao sem problemas
gostaria que alguem podesse me dizer por que esta acontecendo esse erro.
Agradeço desde já.
Deve ser porque esse tamanho não cabe em um int. Tente usar long ao invés de int.
utlizei
long i = Long.parseLong(d);
mais continua dando o mesmo erro ;/
Cara com o Long funciona como prova disso segue o código abaixo.
/**
*
* @author paulo
*/
public class NumberFormat {
public static void main(String[] args) {
String a = "11122233305";
try {
// int i = Integer.parseInt(a);
// Com int realmente não funciona pois o valor é maior que o suportado
long i = Long.parseLong(a);
System.out.println("Formatação OK = " + i);
} catch (NumberFormatException e) {
System.out.println("Deu pau na Formatação " + e.getMessage());
}
}
}
Da onde saiu essa variavel d ?
long i = Long.parseLong(d);
Pelo que percebi você esta tentando formatar um cpf. Tem um projeto novo do pessoal da caelum o nome é stella.
Podes dar uma olhada se quiseres.
http://www.guj.com.br/posts/list/91564.java
Abraço.
o valor máximo de um int é 2.147.483.687, por isso que funciona com 9 dígitos, mas se vc tentar fazer isso com um número maior que isso como 3 milhões então ñ vai dar, muito menos o cpf que tem 11 digitos
como long vai funcionar sim, se o erro continuou pode ser pq vc fez a coisa com pressa e dexo passa batido alguma coisa, então confere ae
flw, t+
Realmente agora funcionou, devo ter feito sem prestar atençao mesmo =(
agora outra coisa … ele nao considera zero a esquerda
entao se o cpf começar com 003 ele tira o 00
como faço para ele considerar o zero a esquerda
tem alguma funcao pronta ou tenho q criar uma ?
Eu só não entendi uma coisa.
Pq tu ta fazendo inserir o cpf como um tipo numerico e não como string?
Normalmente é inserido como String pelo que eu saiba podendo assim deixar inserir com a formatação.
Da uma pensada nisso.
Se realmente você não quer inserir como String posta ai que agente resolve.
Abraço.
Se não quiser deixar como String no banco, vai ter que formatar na hora de mostrar para usuário…
Se não me engano, para fazer isso a classe decimal format pode ajudar.
Vou utilzar essa funcao para inserir varios dados um deles eh o cpf mais existe tambem
telefone, cep realmente podem ser inseridos com a formatacao
mais utilizo tambem o cnpj e com esse valor é usado em varias comparacoes durante a aplicacao
ai guardando tando o cnpj e o cpf com a formatacao
quando precisar fazer comparacao é so utilizar equals sem problema ?
e se for inserido com a formatacao pode acontecer de ter dois valores iguais no bd ?
ou o bd consegue fazer essa comparacao mesmo com a formatacao ?
Cara o banco consegue sim diferenciar, tendo em vista que não existira dois cpf iguais certo?
exemplo.
Select CPF
from tabelaDeUsuario
Where cpf = ‘011.641.510/85’
Ele vai encontrar sem problemas podes tratar melhor ainda usando a função trim para tirar os espaços da String para não ter perigo de ser inserido algum espaço em branco.
Quanto a comparação de Strinjg use o compareTo.
tipo.
String a = "Paulo";
String b = "Paulo";
if (a.compareTo(b) != 0) {
System.out.println("São diferentes as Strings");
} else {
System.out.println("São iguais as Strings");
}
Abraço.
Obrigado, me ajudaram bastante tava com esse problema a dois dias ;/
=))