检查输入null

时间:2012-02-27 03:41:56

标签: java

如果输入不是数字

,我发现这行代码出错了
int sum = Integer.parseInt(request.getParameter("sum"));

错误消息是

type Exception report

message

descriptionThe server encountered an internal error () that prevented it from fulfilling this request.

exception

org.apache.jasper.JasperException: java.lang.NumberFormatException: For input string: "a"
root cause

java.lang.NumberFormatException: For input string: "a"

如果输入是字符串或null,如何处理输入?

感谢

8 个答案:

答案 0 :(得分:3)

首先应确保请求参数不为空且仅包含数字:

if (request.getParameter("sum") != null &&
    request.getParameter("sum").matches("^\\d+$"))
    int sum = Integer.parseInt(request.getParameter("sum"));

答案 1 :(得分:2)

尝试:

int sum = 0;
try {
    sum = Integer.parseInt(request.getParameter("sum"));
}
catch (NumberFormatException e) {
    // sum = 0. If you needed to do anything else for invalid input
    // put it here.
}

答案 2 :(得分:1)

抓住异常并相应处理:

int sum;
try {
    sum = Integer.parseInt(request.getParameter("sum"));
}
catch {
    //do something if invalid sum
}

答案 3 :(得分:1)

这实际上取决于如果sum不是数字应该怎么做。

try{
 int sum = Integer.parseInt(request.getParameter("sum"));
 }
 catch(Exception e)
 {
  //how do you want to handle it? like ask the user to re-enter the values
 }

答案 4 :(得分:1)

  1. 手动检查(遍历字符)
  2. 抓住例外
  3. 试试这个:

    try {
      sum = Integer.parseInt(request.getParameter("sum"));
    } catch (NumberFormatException e) {
      ... // handle if the string isn't a number
    } catch (NullPointerException e) {
      ... // handle if it's null
    }
    

答案 5 :(得分:1)

在使用Integer.parseInt之前检查null,还可以检查输入是否包含非数字值

答案 6 :(得分:1)

这是一种不涉及抛出和捕获异常的不同方法:

String input = request.getParameter("sum");
// Validate the input using regex
if (input == null || !input.matches("^-?\\d{1,8}$")) {
    // handle bad input, eg throw exception or whatever you like
}
int sum = Integer.parseInt(input);

请注意,此正则表达式不允许数字太大,并允许负数

答案 7 :(得分:1)

我看到org.apache.jasper.JasperException这意味着它在JSP中?如果您要将类似的代码添加到JSP中,您可能需要重新考虑您正在做的事情。理想情况下,您应该在某种控制器中处理诸如输入验证之类的事情,然后将结果传递给JSP的模板以进行渲染。

有许多框架可以帮助解决这类问题,并且通常它们值得使用,因为您的Web应用程序将受益于框架作者在安全领域已经完成的所有工作。 ..

如果您只想破解它,那么已发布的六个代码答案中的任何一个都会对您有用。