java - 如何处理数字格式异常并将 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有点陌生,所以任何帮助将不胜感激!
解决方案
在您的代码中,如果正确解析了价格而计数未正确解析,则价格和计数都将设置为 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;
}
推荐阅读
- python - dpi触发的OverflowError fig.savefig()
- javascript - 更新对象数组的状态时,React 不会重新渲染
- azure - Azure Bot 访问令牌重用,有可能吗?
- python - Python 和 TensorFlow 中的产品匹配
- c# - 如果与表有多个关系,则命名父实体关系 - 实体数据模型 - ADO.Net
- amazon-web-services - 使用 cloudformation 从 eks 集群在 aws 中创建 OIDC 提供程序
- shell - 如何将参数传递给 shell 脚本
- kotlin - Kotlin Coroutine Flow:如何从流中获取第一项(即文件元数据)并将其余项作为内容流传递?
- go - 如何使用 postman multipart/form-data 传递和解析嵌套对象
- snowplow - 架构:与正则表达式模式不匹配