From 705f65a207225301957c5e0edf7b0180806a1086 Mon Sep 17 00:00:00 2001 From: Looly Date: Fri, 27 May 2022 18:03:50 +0800 Subject: [PATCH] add null check --- .../java/cn/hutool/core/math/NumberUtil.java | 40 +++++++++++-------- .../cn/hutool/core/util/NumberUtilTest.java | 10 ++++- 2 files changed, 32 insertions(+), 18 deletions(-) diff --git a/hutool-core/src/main/java/cn/hutool/core/math/NumberUtil.java b/hutool-core/src/main/java/cn/hutool/core/math/NumberUtil.java index 6551520a9..de82d094a 100644 --- a/hutool-core/src/main/java/cn/hutool/core/math/NumberUtil.java +++ b/hutool-core/src/main/java/cn/hutool/core/math/NumberUtil.java @@ -35,7 +35,7 @@ import java.util.Set; * - * + *

* TODO 需整理精简方法,去掉无用的重载方法。 * * @author Looly @@ -723,7 +723,7 @@ public class NumberUtil { if (v1 instanceof BigDecimal && v2 instanceof BigDecimal) { return div((BigDecimal) v1, (BigDecimal) v2, scale, roundingMode); } - return div(StrUtil.toStringOrNull(v1),StrUtil.toStringOrNull(v2), scale, roundingMode); + return div(StrUtil.toStringOrNull(v1), StrUtil.toStringOrNull(v2), scale, roundingMode); } /** @@ -1242,10 +1242,12 @@ public class NumberUtil { * @return 是否为整数 */ public static boolean isInteger(final String s) { - try { - Integer.parseInt(s); - } catch (final NumberFormatException e) { - return false; + if(StrUtil.isNotBlank(s)) { + try { + Integer.parseInt(s); + } catch (final NumberFormatException e) { + return false; + } } return true; } @@ -1259,10 +1261,12 @@ public class NumberUtil { * @since 4.0.0 */ public static boolean isLong(final String s) { - try { - Long.parseLong(s); - } catch (final NumberFormatException e) { - return false; + if (StrUtil.isNotBlank(s)) { + try { + Long.parseLong(s); + } catch (final NumberFormatException e) { + return false; + } } return true; } @@ -1274,11 +1278,13 @@ public class NumberUtil { * @return 是否为{@link Double}类型 */ public static boolean isDouble(final String s) { - try { - Double.parseDouble(s); - return s.contains("."); - } catch (final NumberFormatException ignore) { - // ignore + if (StrUtil.isNotBlank(s)) { + try { + Double.parseDouble(s); + return s.contains("."); + } catch (final NumberFormatException ignore) { + // ignore + } } return false; } @@ -2454,7 +2460,7 @@ public class NumberUtil { return 0L; } - if(StrUtil.startWithIgnoreCase(number, "0x")){ + if (StrUtil.startWithIgnoreCase(number, "0x")) { // 0x04表示16进制数 return Long.parseLong(number.substring(2), 16); } @@ -2528,7 +2534,7 @@ public class NumberUtil { * @since 4.1.15 */ public static Number parseNumber(final String numberStr) throws NumberFormatException { - if(StrUtil.startWithIgnoreCase(numberStr, "0x")){ + if (StrUtil.startWithIgnoreCase(numberStr, "0x")) { // 0x04表示16进制数 return Long.parseLong(numberStr.substring(2), 16); } diff --git a/hutool-core/src/test/java/cn/hutool/core/util/NumberUtilTest.java b/hutool-core/src/test/java/cn/hutool/core/util/NumberUtilTest.java index bee6b828e..2b5d0c6bd 100644 --- a/hutool-core/src/test/java/cn/hutool/core/util/NumberUtilTest.java +++ b/hutool-core/src/test/java/cn/hutool/core/util/NumberUtilTest.java @@ -450,7 +450,15 @@ public class NumberUtilTest { @Test public void divIntegerTest(){ - System.out.println(NumberUtil.div(100101300, (Number) 100)); + final BigDecimal div = NumberUtil.div(100101300, (Number) 100); + Assert.assertEquals(1001013, div.intValue()); + } + + @Test + public void isDoubleTest(){ + Assert.assertFalse(NumberUtil.isDouble(null)); + Assert.assertFalse(NumberUtil.isDouble("")); + Assert.assertFalse(NumberUtil.isDouble(" ")); } }