You need to enable JavaScript to run this app.
优惠活动
大模型
产品
解决方案
定价
更多

Java中数字数组转整数9位正常10位输出错误如何解决

问题原因

Java中int是32位有符号整数,取值范围为-2^31到2^31-1(也就是-2147483648到2147483647)。你期望得到的结果9876543211远大于int的最大值,发生了整数溢出,所以输出了错误的结果。9位的987654321小于int最大值,因此可以正常输出。

修复方案

方案1:使用long类型存储结果(适用于位数≤18位的场景)

long是64位有符号整数,最大值为9223372036854775807,足够容纳10位的目标结果,修改后的代码如下:

public class practice
{
  public static void main(String[] args)
  {
    int digits[] = {9,8,7,6,5,4,3,2,1,1};
    long j = 1;
    long sum = 0;
    for (int i = digits.length-1; i >= 0; i--)
    {
      sum = sum + digits[i] * j;
      j = j * 10;
    }
    System.out.print(sum);
  }
}

方案2:使用BigInteger存储结果(无位数限制)

如果转换的数字位数超过18位,超出long的取值范围,可以使用Java提供的大整数类BigInteger实现,修改后的代码如下:

import java.math.BigInteger;

public class practice
{
  public static void main(String[] args)
  {
    int digits[] = {9,8,7,6,5,4,3,2,1,1};
    BigInteger sum = BigInteger.ZERO;
    BigInteger j = BigInteger.ONE;
    for (int i = digits.length-1; i >= 0; i--)
    {
      sum = sum.add(BigInteger.valueOf(digits[i]).multiply(j));
      j = j.multiply(BigInteger.TEN);
    }
    System.out.print(sum);
  }
}

内容的提问来源于stack exchange,提问作者alpha-

相关产品推荐
方舟 Agent Plan

超全模态模型 × Harness 升级,最新支持 Deepseek-V4.1-Flash、GLM-5.3 系列、Doubao-Seedream-5.0-pro、Kimi-K3 (部分), 限时 9.9 元起

最近更新时间:2026.10.07 09:30:06