java - 给定 int 的字符串表示,检查溢出

标签 java integer

给定 intString 表示,我想检查溢出。

我知道如何使用 java 的内置函数(如 parseInt)从 int 转换为 String。 但是,如果 String 太大以至于它可能无法放入 int 中怎么办?

String str = "214748364781";
int res = Integer.parseInt(str);

我尝试检查 String 表示的符号,执行 parseInt,如果符号不匹配,那么我可以说它确实溢出了 int 环绕,但当我实际运行它时,它抛出了一个 NumberFormat 异常。

NumberFormat 会为任何格式错误的字符串抛出,因此它不能保证溢出。

所以我可以检查输入字符串的格式是否正确(所有数字)然后执行 parseInt 然后如果我得到 NumberFormat 我可以断定错误是由于溢出.

但是,我觉得应该有一种更短的方法来进行这项检查。

最佳答案

将其解析为 Long,如果它可以将其解析为 Integer,如果此时抛出异常,则会溢出。

将其解析为 Long 并检查它是否大于 Integer.MAX_VALUE

关于java - 给定 int 的字符串表示,检查溢出,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/40320159/

相关文章:

java - GUI/ActionListener 问题

postgresql - 如何在 PostgreSQL 中搜索整数范围?

C++如何将我认为是字符串的转换为int?尝试使用 stoi,但会使用任何有效的方法

java - 在长轮询的情况下, Atmosphere 框架会在服务器上抛出错误

java - 使用ReentrantLock和synchronized一样可靠吗?

java - 通过桌面浏览器使用 Java 插件调试 Phonegap

c++ - 将一组整数写入 std::ofstream 并能够读回它们

java - CouchDB:访问 _design View 或提取文档字段的替代方法是什么?

java - 检查数组是否包含某些整数

algorithm - 构建和查找整数范围集的数据结构