当前位置: 首页 > 面试题库 >

在Java中将字符串转换为整数时如何检测溢出

云季同
2023-03-14
问题内容

如果我想将字符串转换为Java中的int,您知道我是否可以检测到溢出吗?我的意思是,字符串文字实际上表示的值大于MAX_INT?

java doc没有提到它。.它只是说,如果不能将字符串解析为整数,它将通过FormatException没有提及有关溢出的问题。


问题答案:

如果我想在Java中将字符串转换为int,您是否知道我是否可以检测到溢出?

是。捕获解析异常将是正确的方法,但是这里的困难在于,对 任何 解析错误(包括溢出)都Integer.parseInt(String s)抛出a
。您可以通过查看JDK 文件中的Java源代码进行验证。幸运的是,由于s没有界限,所以存在一个构造器将抛出相同的解析异常, 范围限制 除外
。我们可以使用此知识来捕获溢出情况:NumberFormatException src.zipBigInteger(String s)

BigInteger

/**
 * Provides the same functionality as Integer.parseInt(String s), but throws
 * a custom exception for out-of-range inputs.
 */
int parseIntWithOverflow(String s) throws Exception {
    int result = 0;
    try {
        result = Integer.parseInt(s);
    } catch (Exception e) {
        try {
            new BigInteger(s);
        } catch (Exception e1) {
            throw e; // re-throw, this was a formatting problem
        }
        // We're here iff s represents a valid integer that's outside
        // of java.lang.Integer range. Consider using custom exception type.
        throw new NumberFormatException("Input is outside of Integer range!");
    }
    // the input parsed no problem
    return result;
}

如果你真的需要自定义此为
超过Integer.MAX_VALUE的输入,你可以这样做只是抛出自定义异常,通过使用@谢尔盖的建议之前。如果上述方法过于矫kill过正,并且您无需隔离溢出情况,只需通过捕获它来抑制异常:

int result = 0;
try {
    result = Integer.parseInt(s);
} catch (NumberFormatException e) {
    // act accordingly
}


 类似资料:
  • 问题内容: 给定一个数字: 将其转换为字符串的“最佳”方法是: 问题答案: 有多种方法: (我的偏爱) (我不知道编译器如何处理它,也许它和上面一样有效)

  • 问题内容: 我的Jenkinsfile中有以下内容: 我想在多个地方重用诸如timeout_mins之类的环境参数,但是对于某些插件,需要在某些地方将其转换为整数。我在上面的示例中遇到的错误如下: org.jenkinsci.plugins.workflow.job.properties.PipelineTriggersJobProperty java.lang.IllegalArgumentEx

  • 问题内容: 我有和。我想转换和整数和执行。如何在UNIX中做到这一点? 当前为我返回的结果。 问题答案: 标准解决方案: 您也可以: 但是请注意,这将被视为八进制数字!(因此与相同,但与有所不同)。

  • 本文向大家介绍如何在JavaScript中将字符串转换为整数?,包括了如何在JavaScript中将字符串转换为整数?的使用技巧和注意事项,需要的朋友参考一下 到转换 一个字符串 到整数 parseInt函数() 函数中使用的JavaScript。当字符串不包含数字时,parseInt()函数将返回Nan(不是数字)。如果发送带有数字的字符串,则仅该数字将作为输出返回。此函数将不接受空格。如果发送

  • 我试图从标准输入中读取一些非常大的数字,并将它们相加。 然而,要添加到BigInteger,我需要使用

  • 问题内容: 我有一个来自MySQL查询的元组,像这样: 我想将所有字符串元素转换为整数,然后将它们放回列表列表中: 我试图用它来实现它,eval但是还没有得到任何体面的结果。 问题答案: 是Python标准的内置函数,用于将字符串转换为整数值。你可以使用包含数字作为参数的字符串来调用它,然后返回转换为整数的数字: 上面的照片2。 如果你知道列表T1的结构(它仅包含列表,仅一个级别),则可以在Pyt