我有一个HTTP状态500(小服务程序) - 内部服务器错误,更具体:NumberFormatException错误与解析字符串双击,从HTML表单!
Type Exception Report
Message For input string: "from"
Description The server encountered an unexpected condition that prevented it from fulfilling the request.
Exception
java.lang.NumberFormatException: For input string: "from"
sun.misc.FloatingDecimal.readJavaFormatString(FloatingDecimal.java:2043)
sun.misc.FloatingDecimal.parseDouble(FloatingDecimal.java:110)
java.lang.Double.parseDouble(Double.java:538)
java.lang.Double.valueOf(Double.java:502)
servlets.Servlet2.doGet(Servlet2.java:31)
javax.servlet.http.HttpServlet.service(HttpServlet.java:686)
javax.servlet.http.HttpServlet.service(HttpServlet.java:791)
org.apache.tomcat.websocket.server.WsFilter.doFilter(WsFilter.java:53)
Note The full stack trace of the root cause is available in the server logs.
我试图解决的情况是,我有Servlet1有两个HTML表单数字输入,当你输入它们时,它们发送给Servlet2,这些输入将通过if语句检查它们,然后解析字符串以加倍。那么这些输入之间的值将是将出现的数据。所以,我得到NumberFormatException的错误,我不明白我错了。在我发布的代码片段中,我试图用方法valueOf解决问题,但问题仍然存在。
double douFrom = 0;
double douTo = 0;
String from = request.getParameter("from");
String to = request.getParameter("to");
boolean val = true;
if ((from != null) && (to != null) && from.matches(".*[0-9]+.*") && to.matches(".*[0-9]+.*") && (from.length()>0) && (to.length()>0)) {
douFrom = Double.valueOf("from");
douTo = Double.valueOf("to");
} else {
val = false;
}
在此先感谢!
删除引号:'双。 valueOf(from)',而不是'Double.valueOf(“from”)'。我的意思是错误信息非常明显:4个字母的字符串值'from'不是一个有效的数字。 – Andreas
'Double.valueOf(“from”);'? ''''''double''怎么样?,也许你的意思是'Double.valueOf(from);'? – MadProgrammer
'Double.valueOf(from)'仍然被破坏,因为您的正则表达式只检查字符串*是否包含*数字。如果你只想解析数字,你需要使用'“[0-9] +”'或'“\\ d +”'。但是,这当然只能匹配整数。 – shmosel