使用封裝將 String 轉換為 Int
一、概述
在本教程中,我們將探討在 Java 中封裝將String
輸入轉換為int
方法的不同方法,同時優雅地處理異常。
2.問題陳述
Integer.parseInt()
方法通常用於執行String
到int
的轉換,但如果輸入不是數字,它會拋出異常。
使用try-catch
塊處理此異常會使代碼重複且不可讀:
try {
return Integer.parseInt(input);
} catch (NumberFormatException e) {
logger.error("Encountered an exception while converting string to int");
}
相反,我們可以將轉換封裝在一個處理異常的方法中,並在出現錯誤時返回一個合適的值。這也便於將來修改或更新錯誤處理邏輯。
現在讓我們探討一些實現這種封裝的方法。
3. 封裝轉換
在本節中,我們將探索幾種封裝String
到int
轉換邏輯的方法。我們可以使用Optional
封裝從 S tring
到int
轉換產生的Integer
值或指示轉換失敗:
3.1.使用Integer.parseInt()
我們可以使用Integer
類提供的parseInt
() 方法將String
值轉換為int
。 try-catch
塊可以處理所有異常,主要是NumberFormatException
,並在出現錯誤時返回默認值:
Optional<Integer> convertStringToIntUsingIntegerParseInt(String input) {
try {
return Optional.of(Integer.parseInt(input));
} catch (NumberFormatException e) {
return Optional.empty();
}
}
此方法使用自動裝箱將基本類型int
轉換為其相應的包裝類Integer.
3.2.使用Integer.valueOf()
在 Java 中, valueOf()
方法是一種靜態方法,可用於某些類,包括String, Integer, Double
等。它用於將值的String
表示形式轉換為相應類的對象。
如果在Integer
包裝器類上使用,它會在內部調用parseInt()
。我們可以使用這個方法在單個封裝的方法中實現轉換和錯誤處理:
Optional<Integer> convertStringToIntUsingIntegerValueOf(String input) {
try {
return Optional.of(Integer.valueOf(input));
} catch (NumberFormatException e) {
return Optional.empty();
}
}
3.3.使用**Integer.decode()**
Integer.decode()
的工作方式與Integer.valueOf(),
但也可以接受其他一些數字表示形式,如十進制、十六進制和八進制數:
Optional<Integer> convertStringToIntUsingIntegerDecode(String input) {
try {
return Optional.of(Integer.decode(input));
} catch (Exception e) {
return Optional.empty();
}
}
3.4.使用 Apache Commons 的NumberUtils
我們可以使用 Apache Commons Lang 3 庫中的NumberUtils
類提供的Integer
轉換方法。要使用該庫,我們可以在我們的pom.xml
文件中添加一個依賴項:
<dependency>
<groupId>org.apache.commons</groupId>
<artifactId>commons-lang3</artifactId>
<version>3.12.0</version>
</dependency>
它接受一個默認值以在轉換失敗時返回。我們可以使用toInt()
方法來實現我們的封裝:
int convertIntToStringUsingNumberUtils(String input, Integer defaultValue) {
return NumberUtils.toInt(input, defaultValue);
}
4。結論
在本文中,我們研究了將String
轉換為int
、處理錯誤以及處理需要返回默認值或需要記錄錯誤的情況的各種方法。
與往常一樣,代碼在 GitHub 上可用。