2016-02-19 40 views
0

表字段如何解決Java中的NumberFormatException?

Field: Bank_Account_No 
Type : int(100) 

這是二傳手/ getter方法

@Entity 
@Table(name = "account") 
public class Account { 

@Column(name = "Pharmacy_Account_No") 
private Integer pharmacyAccountNo; 

public Integer getPharmacyAccountNo() { 
    return pharmacyAccountNo; 
} 

public void setPharmacyAccountNo(Integer pharmacyAccountNo) { 
    this.pharmacyAccountNo = pharmacyAccountNo; 
    } 
} 

我的賬戶'模式,如果我插入 「1234567891」 這將增加成功。但是,當我將「123456789111111」它拋出NumberFormatException的

Inserting Code: 
pharmacyAccount.setPharmacyAccountNo(request.getParameter("pharmacyAccountNo"). != null 
         && !request.getParameter("pharmacyAccountNo").equals("") 
           ? Integer.valueOf(request.getParameter("pharmacyAccountNo") : 0); 

這裏StackTrach:

java.lang.NumberFormatException: For input string: "123456789111111" 
at java.lang.NumberFormatException.forInputString(Unknown Source) 
at java.lang.Integer.parseInt(Unknown Source) 
at java.lang.Integer.parseInt(Unknown Source) 
at com.pharmacy.ServiceImpl.PharmacyServiceImpl.savePharmacyAccount(PharmacyServiceImpl.java:977) 
at com.pharmacy.ServiceImpl.PharmacyServiceImpl.savePharmacy(PharmacyServiceImpl.java:838) 
at sun.reflect.NativeMethodAccessorImpl.invoke0(Native Method) 
at sun.reflect.NativeMethodAccessorImpl.invoke(Unknown Source) 
at sun.reflect.DelegatingMethodAccessorImpl.invoke(Unknown Source) 
at java.lang.reflect.Method.invoke(Unknown Source) 
at org.springframework.aop.support.AopUtils.invokeJoinpointUsingReflection(AopUtils.java:307) 
at org.springframework.aop.framework.ReflectiveMethodInvocation.invokeJoinpoint(ReflectiveMethodInvocation.java:183) 
at org.springframework.aop.framework.ReflectiveMethodInvocation.proceed(ReflectiveMethodInvocation.java:150) 
at org.springframework.transaction.interceptor.TransactionInterceptor.invoke(TransactionInterceptor.java:108) 
at org.springframework.aop.framework.ReflectiveMethodInvocation.proceed(ReflectiveMethodInvocation.java:172) 
at org.springframework.aop.framework.JdkDynamicAopProxy.invoke(JdkDynamicAopProxy.java:202) 
at com.sun.proxy.$Proxy29.savePharmacy(Unknown Source) 
at com.pharmacy.Controller.PharmacyController.savePharmacy(PharmacyController.java:232) 
at sun.reflect.NativeMethodAccessorImpl.invoke0(Native Method) 
at sun.reflect.NativeMethodAccessorImpl.invoke(Unknown Source) 
at sun.reflect.DelegatingMethodAccessorImpl.invoke(Unknown Source) 
at java.lang.reflect.Method.invoke(Unknown Source) 
at org.springframework.web.bind.annotation.support.HandlerMethodInvoker.doInvokeMethod(HandlerMethodInvoker.java:710) 
at org.springframework.web.bind.annotation.support.HandlerMethodInvoker.invokeHandlerMethod(HandlerMethodInvoker.java:167) 
at org.springframework.web.servlet.mvc.annotation.AnnotationMethodHandlerAdapter.invokeHandlerMethod(AnnotationMethodHandlerAdapter.java:414) 
at org.springframework.web.servlet.mvc.annotation.AnnotationMethodHandlerAdapter.handle(AnnotationMethodHandlerAdapter.java:402) 
at org.springframework.web.servlet.DispatcherServlet.doDispatch(DispatcherServlet.java:771) 
at org.springframework.web.servlet.DispatcherServlet.doService(DispatcherServlet.java:716) 
at org.springframework.web.servlet.FrameworkServlet.processRequest(FrameworkServlet.java:647) 
at org.springframework.web.servlet.FrameworkServlet.doPost(FrameworkServlet.java:563) 
at javax.servlet.http.HttpServlet.service(HttpServlet.java:650) 
at javax.servlet.http.HttpServlet.service(HttpServlet.java:731) 
at org.apache.catalina.core.ApplicationFilterChain.internalDoFilter(ApplicationFilterChain.java:303) 
at org.apache.catalina.core.ApplicationFilterChain.doFilter(ApplicationFilterChain.java:208) 
at org.apache.tomcat.websocket.server.WsFilter.doFilter(WsFilter.java:52) 
at org.apache.catalina.core.ApplicationFilterChain.internalDoFilter(ApplicationFilterChain.java:241) 
at org.apache.catalina.core.ApplicationFilterChain.doFilter(ApplicationFilterChain.java:208) 
at org.springframework.security.web.FilterChainProxy$VirtualFilterChain.doFilter(FilterChainProxy.java:343) 
at org.springframework.security.web.access.intercept.FilterSecurityInterceptor.invoke(FilterSecurityInterceptor.java:99) 
at org.springframework.security.web.access.intercept.FilterSecurityInterceptor.doFilter(FilterSecurityInterceptor.java:83) 
at org.springframework.security.web.FilterChainProxy$VirtualFilterChain.doFilter(FilterChainProxy.java:355) 
at org.springframework.security.web.access.intercept.FilterSecurityInterceptor.invoke(FilterSecurityInterceptor.java:109) 
at org.springframework.security.web.access.intercept.FilterSecurityInterceptor.doFilter(FilterSecurityInterceptor.java:83) 
at org.springframework.security.web.FilterChainProxy$VirtualFilterChain.doFilter(FilterChainProxy.java:355) 
at org.springframework.security.web.access.ExceptionTranslationFilter.doFilter(ExceptionTranslationFilter.java:97) 
at org.springframework.security.web.FilterChainProxy$VirtualFilterChain.doFilter(FilterChainProxy.java:355) 
at org.springframework.security.web.session.SessionManagementFilter.doFilter(SessionManagementFilter.java:100) 
at org.springframework.security.web.FilterChainProxy$VirtualFilterChain.doFilter(FilterChainProxy.java:355) 
at org.springframework.security.web.authentication.AnonymousAuthenticationFilter.doFilter(AnonymousAuthenticationFilter.java:78) 
at org.springframework.security.web.FilterChainProxy$VirtualFilterChain.doFilter(FilterChainProxy.java:355) 
at org.springframework.security.web.servletapi.SecurityContextHolderAwareRequestFilter.doFilter(SecurityContextHolderAwareRequestFilter.java:54) 
at org.springframework.security.web.FilterChainProxy$VirtualFilterChain.doFilter(FilterChainProxy.java:355) 
at org.springframework.security.web.savedrequest.RequestCacheAwareFilter.doFilter(RequestCacheAwareFilter.java:35) 
at org.springframework.security.web.FilterChainProxy$VirtualFilterChain.doFilter(FilterChainProxy.java:355) 
at org.springframework.security.web.authentication.www.BasicAuthenticationFilter.doFilter(BasicAuthenticationFilter.java:177) 
at org.springframework.security.web.FilterChainProxy$VirtualFilterChain.doFilter(FilterChainProxy.java:355) 
at org.springframework.security.web.authentication.ui.DefaultLoginPageGeneratingFilter.doFilter(DefaultLoginPageGeneratingFilter.java:90) 
at org.springframework.security.web.FilterChainProxy$VirtualFilterChain.doFilter(FilterChainProxy.java:355) 
at org.springframework.security.web.authentication.AbstractAuthenticationProcessingFilter.doFilter(AbstractAuthenticationProcessingFilter.java:188) 
at org.springframework.security.web.FilterChainProxy$VirtualFilterChain.doFilter(FilterChainProxy.java:355) 
at org.springframework.security.web.authentication.AbstractAuthenticationProcessingFilter.doFilter(AbstractAuthenticationProcessingFilter.java:188) 
at org.springframework.security.web.FilterChainProxy$VirtualFilterChain.doFilter(FilterChainProxy.java:355) 
at org.springframework.security.web.authentication.logout.LogoutFilter.doFilter(LogoutFilter.java:105) 
at org.springframework.security.web.FilterChainProxy$VirtualFilterChain.doFilter(FilterChainProxy.java:355) 
at org.springframework.security.web.authentication.logout.LogoutFilter.doFilter(LogoutFilter.java:105) 
at org.springframework.security.web.FilterChainProxy$VirtualFilterChain.doFilter(FilterChainProxy.java:355) 
at org.springframework.security.web.context.SecurityContextPersistenceFilter.doFilter(SecurityContextPersistenceFilter.java:79) 
at org.springframework.security.web.FilterChainProxy$VirtualFilterChain.doFilter(FilterChainProxy.java:355) 
at org.springframework.security.web.session.ConcurrentSessionFilter.doFilter(ConcurrentSessionFilter.java:109) 
at org.springframework.security.web.FilterChainProxy$VirtualFilterChain.doFilter(FilterChainProxy.java:355) 
at org.springframework.security.web.FilterChainProxy.doFilter(FilterChainProxy.java:149) 
at org.springframework.web.filter.DelegatingFilterProxy.invokeDelegate(DelegatingFilterProxy.java:237) 
at org.springframework.web.filter.DelegatingFilterProxy.doFilter(DelegatingFilterProxy.java:167) 
at org.apache.catalina.core.ApplicationFilterChain.internalDoFilter(ApplicationFilterChain.java:241) 
at org.apache.catalina.core.ApplicationFilterChain.doFilter(ApplicationFilterChain.java:208) 
at org.apache.catalina.core.StandardWrapperValve.invoke(StandardWrapperValve.java:220) 
at org.apache.catalina.core.StandardContextValve.invoke(StandardContextValve.java:122) 
at org.apache.catalina.authenticator.AuthenticatorBase.invoke(AuthenticatorBase.java:505) 
at org.apache.catalina.core.StandardHostValve.invoke(StandardHostValve.java:170) 
at org.apache.catalina.valves.ErrorReportValve.invoke(ErrorReportValve.java:103) 
at org.apache.catalina.valves.AccessLogValve.invoke(AccessLogValve.java:956) 
at org.apache.catalina.core.StandardEngineValve.invoke(StandardEngineValve.java:116) 
at org.apache.catalina.connector.CoyoteAdapter.service(CoyoteAdapter.java:423) 
at org.apache.coyote.http11.AbstractHttp11Processor.process(AbstractHttp11Processor.java:1079) 
at org.apache.coyote.AbstractProtocol$AbstractConnectionHandler.process(AbstractProtocol.java:625) 
at org.apache.tomcat.util.net.JIoEndpoint$SocketProcessor.run(JIoEndpoint.java:318) 
at java.util.concurrent.ThreadPoolExecutor.runWorker(Unknown Source) 
at java.util.concurrent.ThreadPoolExecutor$Worker.run(Unknown Source) 
at org.apache.tomcat.util.threads.TaskThread$WrappingRunnable.run(TaskThread.java:61) 
at java.lang.Thread.run(Unknown Source) 
+0

「123456789111111」 是比Java整數的最大值以上(最大值= 2147483647和MIN = -2147483648) – DestinatioN

+0

好,你是超出了一個'Integer' MAX值。如果你期望你的值大 – jmcg

回答

3

如果你看一下堆棧跟蹤你看到java.lang.Integer.parseInt

您所提供的數字太大了Integer的範圍。您應該嘗試使用Long

如果您檢查從Oracle網站上的文檔:

INT:默認情況下,int數據類型爲32位有符號二進制補 整數,它具有-231和最小值最大值爲 231-1。在Java SE 8和更高版本中,可以使用int數據類型 表示無符號的32位整數,其最小值爲0 ,最大值爲232-1。使用Integer類將int數據 類型用作無符號整數。有關更多信息,請參見 的數字類部分。靜態方法,如compareUnsigned,divideUnsigned 等已被添加到Integer類中,以支持對無符號整數的算術運算 。

來源:https://docs.oracle.com/javase/tutorial/java/nutsandbolts/datatypes.html

+0

意味着int(100)沒有問題,那麼使用'Long'?你有什麼建議Long的問題是什麼。感謝您的時間。 @ maythesource.com –

+0

@Ashish Shah根據使用的位數,每種數據類型都有不同的範圍。您輸入的數字需要更多位來存儲。檢查oracle網站上的文檔Long是適合您的編號的類型。有符號長的最小值爲-2^63,最大值爲2^63-1 *( - 9,22337E + 18至9,22337E + 18) –

+0

另請參閱以下內容,這是很好的信息有關於Java和C/C++的區別。 Java類型是標準的,因爲所有東西都在JVM上運行。對於C/C++,類型會根據機器的體系結構而變化(http://stackoverflow.com/questions/15004944/max-value-of-integer?lq=1)。 –

3

Integer數目超出範圍。將您的類型更改爲Long

整數值應該是在一個int

之間

的常量保持最大值可以有,2 ^31-1。 即2147483647

的常量保持最小值int可以有,-2^31 .IE 2147483648

它總是建議長期使用IDS,因爲這將需要64位,即

2^ 63-1 - -2^63

1

數量超出範圍。 "123456789111111"是一個很長的數字。

哪些範圍:

   width      minimum       maximum 
signed 8 bit      -128       +127 
signed 16 bit      -32 768       +32 767 
signed 32 bit    -2 147 483 648     +2 147 483 647 
signed 64 bit -9 223 372 036 854 775 808  +9 223 372 036 854 775 807 
unsigned 8 bit       0       +255 
unsigned 16 bit       0       +65 535 
unsigned 32 bit       0     +4 294 967 295 
unsigned 64 bit       0  +18 446 744 073 709 551 615 

Reference。檢查Integer用於描述

0

數123,456,789,111,111高於Integer.MAX_INT爲2,147,483,647 (2^31-1),要被使用龍,而不是一個整數作爲長可達到2^63-1(9,223,372,036,854,775,807)如果你期待的麻木很大。

+0

你好,每一個..謝謝allz ..完成改變龍類型。並且我也改變了我在BIGINT中的數據字段類型。非常感謝。 –

0

使用而不是整數爲IDENTITY字段。 小數貨幣操作

0

如上所述,最好是使用長不是整數的對象,因爲這將讓您的應用程序與大尺寸處理數字。

的帶符號的長具有-2^63最小值和(2^63)的最大值 - 1

int數據類型是一個32位符號的二進制補整數。最小值是 - 2,147,483,648。 (-2^31)最大值爲2,147,483,647(含)。 (2^31 -1)