2011-04-10 86 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;聲明;以防萬一你的用戶輸入文本字段的非數字值。