当前位置: 首页 > 面试题库 >

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

司寇照
2023-03-14
问题内容

在我日常的Web应用程序开发中,有许多情况需要我们从用户那里获取一些输入。

然后将这个数字输入传递给可能是应用程序的服务层或DAO层。

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

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

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

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

处理此类情况的最佳方法是什么?


问题答案:

只需捕获您的异常并进行适当的异常处理即可:

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


 类似资料:
  • 当尝试将字符串解析为日期或时间时,如果字符串格式与指定的格式不匹配,会抛出DateTimeParseException 异常。 问题是必现,复现代码如下:

  • 问题内容: 一旦我的代码进入我的循环,它就会生成is close异常。是什么导致此异常,我该如何纠正? 编辑: 我在代码中注意到我与另一个嵌套循环,两个结果集都来自同一数据库,这是一个问题吗? 问题答案: 听起来好像您在遍历第一个语句的结果集之前在同一连接中执行了另一个语句。如果要嵌套处理来自同一数据库的两个结果集,则说明您做错了什么。这些集合的组合应在数据库侧完成。

  • 问题内容: 在使用java时经常会发生数组越界异常,它是如何发生的?怎么避免? 问题答案: 这异常通常是我们所说的数组下标越界,索引为负或大于或等于数组的大小。 数组的下标从0开始,最大是:array.length,例如,下面的代码误认为数组从1开始: 应该这样来做:

  • 当方法调用的嵌套层级过深,导致栈空间耗尽时,会抛出StackOverflowError错误。 尝试复现问题,代码如下:

  • 我已经在我的应用程序中编辑文本以操纵产品数量,但是如果我要更改数量,那么问题就是在那个时候获得NPE。要更改编辑文本中的数量,我需要删除现有内容并需要添加新数量,请检查以下代码

  • 问题内容: 要避免很多。 有没有好的替代方法? 例如: 当不知道对象是否存在时,可以避免使用。 问题答案: 在我看来,这似乎是一个相当普遍的问题,初级和中级开发人员往往会在某个时候遇到这些问题:他们要么不知道,要么不信任他们所参与的合同,并且防御性地检查了null。另外,在编写自己的代码时,他们倾向于依靠返回空值来表示某些内容,因此要求调用者检查空值。 换句话说,在两种情况下会出现空检查: 如果为