2016-02-19 3 views
0

Таблица ПолеКак решить NumberFormatException в Java?

Field: Bank_Account_No 
Type : int(100) 

Это мой «счет» модели с помощью метода сеттер/добытчика

@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 и мин = -2147483648) – DestinatioN

+0

хорошо, вы за пределами значения MAX для 'Integer'. Используйте 'Long', если вы ожидаете, что ваши значения будут такими большими – jmcg

ответ

3

Если вы посмотрите на StackTrace вы видите java.lang.Integer.parseInt

Количество вы предоставляете слишком большой из диапазона целого. Вы должны попробовать использовать Long.

Если вы обратитесь к документации на веб-сайте оракула:

INT: По умолчанию, тип INT данных представляет собой 32-разрядное знаковое двоичное дополнение целое число, которое имеет минимальное значение -231 и а максимальное значение 231-1. В Java SE 8 и более поздних версиях вы можете использовать тип данных int для , представляя 32-разрядное целое без знака, которое имеет минимальное значение 0 и максимальное значение 232-1. Используйте класс Integer для использования int data типа как целое число без знака. См. Раздел «Числовые классы для ». Статические методы, такие как compareUnsigned, divideUnsigned и т. Д., Были добавлены в класс Integer для поддержки арифметических операций для целых чисел без знака.

Источник: https://docs.oracle.com/javase/tutorial/java/nutsandbolts/datatypes.html

+0

означает, что нет проблемы с int (100)? в чем проблема, почему вы предлагаете 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

рекомендуется всегда использовать Long для идентификаторов, потому что он будет принимать 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), вы хотите использовать Длинным, а не Integer как долго может быть до 2^63-1 (9,223,372,036,854,775,807), если вы ожидаете больших размеров.

+0

Привет всем ... Спасибо за allz..done с изменением на Long Type. а также я изменил свой тип поля данных в BIGINT. Большое спасибо. –

0

Длинные вместо Целое число для полей IDENTITY. Десятичный для валютных операций

0

Как упоминалось выше, предпочтительно использовать Long вместо объекта Integer, так как это позволит приложению обрабатывать номера с большими размерами.

Подписанный длиной имеет минимальное значение -2^63 и максимальное значение (2^63) - 1.

тип Int данных представляет собой 32-разрядное целое двоичное дополнение целое число. Минимальное значение - 2,147,483,648. (-2^31) Максимальное значение составляет 2,147,483,647 (включительно). (2^31 -1)

Смежные вопросы