首页 > 解决方案 > 如何处理数字格式异常并将 int/double 变量替换为默认值 0/0.0?

问题描述

              try {

                 price = Double.parseDouble(tokens[3]);
                 count = Integer.parseInt(tokens[4]);

             }catch (NumberFormatException n){

                 price = 0.0;
                 count = 0;
             }

在上面的代码中,我有我的 try-catch 块当前的样子,我试图弄清楚如果输入是字符串或负值,如何用 0 替换这些值。我不确定我是否可以在一次尝试中做到这一点,或者我是否需要两个单独的。我对java有点陌生,所以任何帮助将不胜感激!

标签: java

解决方案


在您的代码中,如果正确解析了价格而计数未正确解析,则价格和计数都将设置为 0。我认为这不是您需要做的。

如果你需要分别处理每一个,即如果 price 被正确解析但 count 不是,那么你将不得不为两个 var 中的每一个放置两个不同的 try-catch 块。

此外,此代码不检查是否为负。如果 number 为负数,则不会抛出 NumberFormatException。成功解析数字后,您必须检查这一点。

  try {

             price = Double.parseDouble(tokens[3]);
             if (price <0)
                 throw new NumberFormatException();

         }catch (NumberFormatException n){

             price = 0.0;
         }




   try {

             count = Integer.parseInt(tokens[4]);
             if(count <0) 
                 throw new NumberFormatException();

         }catch (NumberFormatException n){

             count = 0;
         }

推荐阅读