我有一個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