gpt4 book ai didi

java - Java中将数字从字符串转换为整数时的随机负数

转载 作者:行者123 更新时间:2023-12-02 09:21:27 25 4
gpt4 key购买 nike

尝试使用此代码将数字字符串转换为二进制

public static int convert(String text)
{
int num =0;
for(int i =0; i<text.length();i++)
{
if(((int)text.charAt(i)>=48)&&((int)text.charAt(i)<=59))
{
System.out.println("Before: i = " + i + " num = "+ num+" char = "+ text.charAt(i) + "numchar = " + ((int)text.charAt(i)-48));
num = num*10 + ((int)text.charAt(i)-48);
System.out.println("After: i = " + i + " num = "+ num+" char = "+ text.charAt(i) + "numchar = " + ((int)text.charAt(i)-48));
}

}
return num;
}
}

但是,一旦达到第 10 个数字,即使我的测试字符串是二进制,输出也会完全困惑,包含负数和随机数。知道为什么会发生这种情况吗?

最佳答案

Java 中的 int 数据类型是一个 32 位有符号整数,因此它可以表示的最大值是 2^31 - 1 = 2147483647。由于您正在尝试解析大于此的数字,你的算术结果将是 integer overflow .

要解决此问题,您需要使用可以表示更大整数的数据类型,例如 long(最多约 19 位数字)或 BigInteger (任意大)。

关于java - Java中将数字从字符串转换为整数时的随机负数,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/58665578/

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