2011-04-10 92 views
0

当我保存其给予即数字值的误差OUT RANGE 的数据我采取这种3字段作为DATATYPE NUMBER在MS Access DB数值超出范围

我被带到所述移动无为4343242434我已经写代码是这样的:

double mno= Long.parseLong(tfmno.getText()); 
len = tfmno.getText().length(); 
if(len!=10) { 
JOptionPane.showMessageDialog(null,"Enter The 10 Digit Mobile No","Error",JOptionPane.ERROR_MESSAGE); 
return; 
} 

和我被带到了PIN码为:2222222和我的PIN码的代码是:

nt pincode=Integer.parseInt(tfpcd.getText()); 
len1 = tfpcd.getText().length(); 
if(len1!=7) { 
JOptionPane.showMessageDialog(null,"Enter The 7 Digit Pin Code","Error",JOptionPane.ERROR_MESSAGE); 
return; 
} 

,我被带到了电话号码为:2222333,我的这个代码是:

int tele=Integer.parseInt(tftele.getText()); 
     len2 = tftele.getText().length(); 
     if(len2!=7){ 
     JOptionPane.showMessageDialog(null,"Enter The 7 Digit Telephone No","Error",JOptionPane.ERROR_MESSAGE); 
     return; 
     } 

告诉我哪个值exeeding和我应该怎么做,而不是

+1

你为什么要解析为一个长期,并把它放在一个双?长整数是64位,所以是双精度,但双精度值不能保持大的值,因为处理小数需要大量的内存。 – JackMc 2011-04-10 18:21:46

回答

0

好了,应用程序应该告诉你哪场/线的错误是在

然而,像杰克告诉你们,这可能是这一行:double mno= Long.parseLong(tfmno.getText());

顺便说一句,你为什么不存储VALU es作为文本?

1

你没有告诉我们tftele是什么,但是从调用的方法中,我会猜测它是一个JTextField。

如果是这样,你的问题是,在第一个例子中,你正在把你的long值和分配给double

A double是一个双精度浮点值,因此它使用了大量的64位分配内存来存储小数点后的值。将值存储在double中是毫无意义的,特别是在它被解析为long之后(任何小数位都会抛出异常)。

我相信你的代码应该使用一个long值,因为你已经把它解析为一个长整型。

另外,当您执行X.parseX(text)时,请考虑捕获NumberFormatException;声明;以防万一你的用户输入文本字段的非数字值。