如何避免Java中的数字格式异常?

2022-09-03 17:38:27

在常的Web应用程序开发中,有很多情况下我们需要从用户那里获得一些数字输入。

然后把这个数字输入传递给可以是服务层或DAO层的应用。

在某个阶段,由于它是一个数字(整数或浮点数),我们需要将其转换为整数,如以下代码片段所示。

String cost = request.getParameter("cost");

if (cost !=null && !"".equals(cost) ){
    Integer intCost = Integer.parseInt(cost);
    List<Book> books = bookService . findBooksCheaperThan(intCost);  
}

在上述情况下,我必须检查输入是否不为空,或者没有输入(空白),或者有时有可能输入非数字,例如blah,test等。

处理这种情况的最佳方法是什么?


答案 1

只需捕获异常并执行正确的异常处理:

if (cost !=null && !"".equals(cost) ){
        try {
           Integer intCost = Integer.parseInt(cost);
           List<Book> books = bookService . findBooksCheaperThan(intCost);  
        } catch (NumberFormatException e) {
           System.out.println("This is not a number");
           System.out.println(e.getMessage());
        }
    }

答案 2

与往常一样,雅加达下议院至少有部分答案:

NumberUtils.isNumber()

这可用于检查给定字符串是否为数字。你仍然必须选择做什么,以防你的字符串不是一个数字......


推荐