gpt4 book ai didi

java - 在 Java 8 中不使用 try-catch 的 parseInt 方法?

转载 作者:搜寻专家 更新时间:2023-11-01 03:59:48 28 4
gpt4 key购买 nike

有没有更好的方法尝试将可以是或不是整数的字符串转换为 int?Integer.parseInt(String value) 适用于“25”或“019”,但不适用于“hello”或“8A”。在 Java 8 中,我们有可选值,例如:

public static void main(String[] args) {
Optional<Integer> optionalResult = functionThatReturnsOptionalInteger();
Integer finalValue = optionalResult.orElse(0);
System.out.println(finalValue);
}

public static Optional<Integer> functionThatReturnsOptionalInteger() {
Integer[] ints = new Integer[0];
return Stream.of(ints).findAny();
}

您不需要检查空值,因为 Optional 包装器公开了处理此类情况的有用方法。

但是如果你想parseInt一个字符串,它可以是空的,或者不包含一个有效的整数,解决方案和往常一样:

public static Integer parseIntOrDefault(String toParse, int defaultValue) {
try {
return Integer.parseInt(toParse);
} catch (NumberFormatException e) {
return defaultValue;
}
}

如何使用 Java 8 功能改进这一点,为什么 Integer.parseInt() 没有被重载以在参数错误的情况下返回可选? (或者只是将一个新方法 Integer.parseIntOptional() 添加到 Integer 包装器)

最佳答案

标准库afaik中不存在这样的东西,但你可以编写一个方法来解析String进入 Optional<Integer>像这样:

public static Optional<Integer> parseInt(String toParse) {
try {
return Optional.of(Integer.parseInt(toParse));
} catch (NumberFormatException e) {
return Optional.empty();
}
}

关于java - 在 Java 8 中不使用 try-catch 的 parseInt 方法?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/46241342/

28 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com