diff --git a/core-java-modules/core-java-numbers-conversions/pom.xml b/core-java-modules/core-java-numbers-conversions/pom.xml
index 55df86d5c7..f745b83f8a 100644
--- a/core-java-modules/core-java-numbers-conversions/pom.xml
+++ b/core-java-modules/core-java-numbers-conversions/pom.xml
@@ -12,6 +12,14 @@
0.0.1-SNAPSHOT
+
+
+ org.apache.commons
+ commons-lang3
+ ${commons-lang3.version}
+
+
+
core-java-numbers-conversions
diff --git a/core-java-modules/core-java-numbers-conversions/src/main/java/com/baeldung/stringtoint/StringToIntConverter.java b/core-java-modules/core-java-numbers-conversions/src/main/java/com/baeldung/stringtoint/StringToIntConverter.java
new file mode 100644
index 0000000000..151dcb3fdb
--- /dev/null
+++ b/core-java-modules/core-java-numbers-conversions/src/main/java/com/baeldung/stringtoint/StringToIntConverter.java
@@ -0,0 +1,38 @@
+package com.baeldung.stringtoint;
+
+import java.util.Optional;
+import org.apache.commons.lang3.math.NumberUtils;
+
+public class StringToIntConverter {
+ Optional convertStringToIntUsingIntegerParseInt(String input){
+ try {
+ return Optional.of(Integer.parseInt(input));
+ } catch (NumberFormatException e) {
+ // log or handle the error
+ return Optional.empty();
+ }
+ }
+
+ Optional convertStringToIntUsingIntegerValueOf(String input){
+ try {
+ return Optional.of(Integer.valueOf(input));
+ } catch (NumberFormatException e) {
+ // log or handle the error
+ return Optional.empty();
+ }
+ }
+
+ Optional convertStringToIntUsingIntegerDecode(String input){
+ try {
+ return Optional.of(Integer.decode(input));
+ } catch (Exception e) {
+ // log or handle the error
+ return Optional.empty();
+ }
+ }
+
+ int convertStringToIntUsingNumberUtils(String input, Integer defaultValue){
+ return NumberUtils.toInt(input, defaultValue);
+ }
+}
+
diff --git a/core-java-modules/core-java-numbers-conversions/src/test/java/com/baeldung/stringtoint/StringToIntConverterUnitTest.java b/core-java-modules/core-java-numbers-conversions/src/test/java/com/baeldung/stringtoint/StringToIntConverterUnitTest.java
new file mode 100644
index 0000000000..15cc04ed04
--- /dev/null
+++ b/core-java-modules/core-java-numbers-conversions/src/test/java/com/baeldung/stringtoint/StringToIntConverterUnitTest.java
@@ -0,0 +1,53 @@
+package com.baeldung.stringtoint;
+
+import java.util.Arrays;
+import java.util.List;
+import org.junit.jupiter.api.Assertions;
+import org.junit.jupiter.api.Test;
+
+class StringToIntConverterUnitTest {
+
+ private StringToIntConverter stringToIntConverter = new StringToIntConverter();
+
+ @Test
+ void whenConvertingIntToString_thenInvalidCasesReturnIntegerMinValue() {
+ List testData = Arrays.asList(
+ new TestData("", Integer.MIN_VALUE),
+ new TestData(null, Integer.MIN_VALUE),
+ new TestData("23,56", Integer.MIN_VALUE),
+ new TestData("2147483648", Integer.MIN_VALUE),
+ new TestData("-2147483649", Integer.MIN_VALUE),
+ new TestData("hello", Integer.MIN_VALUE)
+ );
+ testData.forEach(data -> {
+ Assertions.assertEquals(data.expectedOutput, stringToIntConverter.convertStringToIntUsingIntegerParseInt(data.input).orElse(Integer.MIN_VALUE));
+ Assertions.assertEquals(data.expectedOutput, stringToIntConverter.convertStringToIntUsingIntegerValueOf(data.input).orElse(Integer.MIN_VALUE));
+ Assertions.assertEquals(data.expectedOutput, stringToIntConverter.convertStringToIntUsingIntegerDecode(data.input).orElse(Integer.MIN_VALUE));
+ Assertions.assertEquals(data.expectedOutput, stringToIntConverter.convertStringToIntUsingNumberUtils(data.input,Integer.MIN_VALUE ));
+ });
+ }
+
+ @Test
+ void whenConvertingIntToString_thenValidCasesReturnUnboxedInt() {
+ List testData = Arrays.asList(
+ new TestData("23", 23),
+ new TestData("-23", -23)
+ );
+ testData.forEach(data -> {
+ Assertions.assertEquals(data.expectedOutput, stringToIntConverter.convertStringToIntUsingIntegerParseInt(data.input).orElse(Integer.MIN_VALUE));
+ Assertions.assertEquals(data.expectedOutput, stringToIntConverter.convertStringToIntUsingIntegerValueOf(data.input).orElse(Integer.MIN_VALUE));
+ Assertions.assertEquals(data.expectedOutput, stringToIntConverter.convertStringToIntUsingNumberUtils(data.input, Integer.MIN_VALUE));
+ Assertions.assertEquals(data.expectedOutput, stringToIntConverter.convertStringToIntUsingIntegerDecode(data.input).orElse(Integer.MIN_VALUE));
+ });
+ }
+
+ public static class TestData{
+ String input;
+ Integer expectedOutput;
+
+ TestData(String input, Integer expectedOutput){
+ this.input = input;
+ this.expectedOutput = expectedOutput;
+ }
+ }
+}
diff --git a/core-java-modules/core-java-string-conversions/src/main/java/com/baeldung/stringtoint/StringToIntConverter.java b/core-java-modules/core-java-string-conversions/src/main/java/com/baeldung/stringtoint/StringToIntConverter.java
deleted file mode 100644
index 03d77c2aea..0000000000
--- a/core-java-modules/core-java-string-conversions/src/main/java/com/baeldung/stringtoint/StringToIntConverter.java
+++ /dev/null
@@ -1,52 +0,0 @@
-package com.baeldung.stringtoint;
-
-import java.util.Optional;
-import org.apache.commons.lang3.math.NumberUtils;
-
-public class StringToIntConverter {
-
- private StringToIntConverter() {
- }
-
- public static Integer convertStringToIntUsingIntegerParseInt(String input){
- try {
- return Integer.parseInt(input);
- } catch (NumberFormatException e) {
- // log or handle the error
- return Integer.MIN_VALUE;
- }
- }
-
- public static Integer convertStringToIntUsingIntegerValueOf(String input){
- try {
- return Integer.valueOf(input);
- } catch (NumberFormatException e) {
- // log or handle the error
- return Integer.MIN_VALUE;
- }
- }
-
- public static Integer convertStringToIntUsingIntegerDecode(String input){
- try {
- return Integer.decode(input);
- } catch (Exception e) {
- // log or handle the error
- return Integer.MIN_VALUE;
- }
- }
-
- public static Integer convertStringToIntUsingOptional(String input){
- Optional parsedInt;
- try {
- parsedInt = Optional.of(Integer.parseInt(input));
- } catch (Exception e) {
- // log or handle the error
- parsedInt = Optional.empty();
- }
- return parsedInt.orElse(Integer.MIN_VALUE);
- }
-
- public static int convertStringToIntUsingNumberUtils(String input){
- return NumberUtils.toInt(input, Integer.MIN_VALUE);
- }
-}
diff --git a/core-java-modules/core-java-string-conversions/src/test/java/com/baeldung/stringtoint/StringToIntConverterUnitTest.java b/core-java-modules/core-java-string-conversions/src/test/java/com/baeldung/stringtoint/StringToIntConverterUnitTest.java
deleted file mode 100644
index 2bfb4db161..0000000000
--- a/core-java-modules/core-java-string-conversions/src/test/java/com/baeldung/stringtoint/StringToIntConverterUnitTest.java
+++ /dev/null
@@ -1,53 +0,0 @@
-package com.baeldung.stringtoint;
-
-import java.util.Arrays;
-import java.util.List;
-import org.junit.jupiter.api.Assertions;
-import org.junit.jupiter.api.Test;
-
-class StringToIntConverterUnitTest {
-
- @Test
- void whenConvertingIntToString_thenInvalidCasesReturnIntegerMinValue() {
- List testData = Arrays.asList(
- new TestData("", Integer.MIN_VALUE),
- new TestData(null, Integer.MIN_VALUE),
- new TestData("23,56", Integer.MIN_VALUE),
- new TestData("2147483648", Integer.MIN_VALUE),
- new TestData("-2147483649", Integer.MIN_VALUE),
- new TestData("hello", Integer.MIN_VALUE)
- );
- testData.forEach(data -> {
- Assertions.assertEquals(data.expectedOutput, StringToIntConverter.convertStringToIntUsingIntegerParseInt(data.input));
- Assertions.assertEquals(data.expectedOutput, StringToIntConverter.convertStringToIntUsingIntegerValueOf(data.input));
- Assertions.assertEquals(data.expectedOutput, StringToIntConverter.convertStringToIntUsingOptional(data.input));
- Assertions.assertEquals(data.expectedOutput, StringToIntConverter.convertStringToIntUsingIntegerDecode(data.input));
- Assertions.assertEquals(data.expectedOutput, StringToIntConverter.convertStringToIntUsingNumberUtils(data.input));
- });
- }
-
- @Test
- void whenConvertingIntToString_thenValidCasesReturnUnboxedInt() {
- List testData = Arrays.asList(
- new TestData("23", 23),
- new TestData("-23", -23)
- );
- testData.forEach(data -> {
- Assertions.assertEquals(data.expectedOutput, StringToIntConverter.convertStringToIntUsingIntegerParseInt(data.input));
- Assertions.assertEquals(data.expectedOutput, StringToIntConverter.convertStringToIntUsingIntegerValueOf(data.input));
- Assertions.assertEquals(data.expectedOutput, StringToIntConverter.convertStringToIntUsingOptional(data.input));
- Assertions.assertEquals(data.expectedOutput, StringToIntConverter.convertStringToIntUsingNumberUtils(data.input));
- Assertions.assertEquals(data.expectedOutput, StringToIntConverter.convertStringToIntUsingIntegerDecode(data.input));
- });
- }
-
- public static class TestData{
- String input;
- Integer expectedOutput;
-
- TestData(String input, Integer expectedOutput){
- this.input = input;
- this.expectedOutput = expectedOutput;
- }
- }
-}
\ No newline at end of file