Warning: file_get_contents(/data/phpspider/zhask/data//catemap/9/java/376.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Java 检查输入是否为空_Java - Fatal编程技术网

Java 检查输入是否为空

Java 检查输入是否为空,java,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.Ja

如果输入不是数字,我发现这行代码出错

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,如何处理输入


谢谢

捕获异常并相应地处理它:

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

只需捕获异常并相应地处理它:

int sum;
try {
    sum = Integer.parseInt(request.getParameter("sum"));
}
catch {
    //do something if invalid 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
 }

这实际上取决于如果总和不是一个数字,应该怎么做

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
 }
尝试:

尝试:

  • 手动检查(在字符上循环)
  • 抓住例外
  • 试试这个:

    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
    }
    
  • 手动检查(在字符上循环)
  • 抓住例外
  • 试试这个:

    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
    }
    

    您应该首先确保请求参数不为null,并且仅包含数字,方法是:

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

    您应该首先确保请求参数不为null,并且仅包含数字,方法是:

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

    在使用Intefer.parseInt之前检查null,还可以检查输入是否包含除数值以外的内容

    在使用Intefer.parseInt之前检查null,还可以检查输入是否包含除数值以外的内容

    以下是一种不涉及引发和捕获异常的不同方法:

    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);
    

    注意,这个正则表达式不允许数字太大,并且允许负数。这里有一种不同的方法,不涉及抛出和捕获异常:

    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);
    

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

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

    有很多框架可以帮助解决这类问题,一般来说,它们都值得使用,因为您的web应用程序将受益于框架作者在安全等领域所做的所有工作


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

    我看到了
    org.apache.jasper.JasperException
    ,这意味着这是一个JSP?如果要向JSP中添加这样的代码,可能需要重新考虑所做的工作。理想情况下,您应该在某种控制器中处理输入验证之类的事情,然后将结果传递给JSP模板进行呈现

    有很多框架可以帮助解决这类问题,一般来说,它们都值得使用,因为您的web应用程序将受益于框架作者在安全等领域所做的所有工作


    如果你只是想破解,那么已经发布的半打代码答案中几乎任何一个都会对你有用。

    使用
    if
    语句。在catch i use out.println(“请输入一个数字”);,但没有产出?为什么?使用
    if
    语句。在catch中我使用out.println(“请输入一个数字”);,但没有产出?为什么?在catch{}中,我使用out.println(“请输入一个数字”);,但没有产出?为什么?您确定捕捉到了正确的异常吗?如果不确定将引发什么异常,请始终使用已修复问题的异常类。但是如何在异常发生后停止jsp呢?一般来说,您应该始终尝试捕获特定的异常(您也可以捕获更一般的异常)。正确的顺序可能是捕获NumberFormatException,然后是Exception,然后是Throwable。但是在这种特殊情况下,捕获NumberFormatException就足够了;,但没有产出?为什么?您确定捕捉到了正确的异常吗?如果不确定将引发什么异常,请始终使用已修复问题的异常类。但是如何在异常发生后停止jsp呢?一般来说,您应该始终尝试捕获特定的异常(您也可以捕获更一般的异常)。正确的顺序可能是捕获NumberFormatException,然后是Exception,然后是Throwable。但在这种特殊情况下,捕获NumberFormatException就足够了。+1个用于int的好正则表达式(如果对于非常大的数字有点简单)+1个用于int的好正则表达式(如果对于非常大的数字有点简单)