1

我有 4 个字符串:

 str1 = 10110011;(length of all string is:32)
 str2 = 00110000;
 str3 = 01011000;
 str4 = 11110000;

在我的项目中,我必须添加这些字符串,结果应该是:

result[1] = str1[1]+str2[1]+str3[1]+str4[1];

result应该作为整数的加法获得。

对于上面的例子,result = 22341011

我知道Java 中的整数到字符串的转换非常简单,但我发现字符串到整数的转换有点困难。

4

4 回答 4

7

要解析整数,请-2^31 < n < 2^31-1使用:

Integer value = Integer.valueOf("10110011");

对于较大的数字,请使用BigInteger类:

BigInteger value1 = new BigInteger("101100111011001110110011101100111011001110110011");
BigInteger value2 = // etc
BigInteger result = value1.add(value2).add(value3); //etc.
于 2012-08-15T20:07:39.680 回答
2

最简单的方法是使用Integer.parseInt(str1). 返回一个int包含由字符串表示的值。

valueOf()返回一个Integer对象,而不是int原语。

于 2012-08-15T20:10:18.143 回答
1

因为你的数字太大了,它们不适合 int。使用BigInteger类。

于 2012-08-15T20:16:46.183 回答
0

我不知道您的项目以及您的实际问题是什么。但是我从您的部分信息中猜测,正如您所解释的,您有多组位表示的字符串。

str1 = "1000110.....11";
str1 = "1110110.....01"; etc

添加这些十进制值会产生模棱两可的结果,因为整数可以是多个整数值的总和。请看下面的示例,其中总共有 5 种可能性 [具有正十进制值] 产生 6。

1+5 = 6;
2+4 = 6;
3+3 = 6;
4+2 = 6;
5+1 = 6;

如果你以这种方式继续,你只会犯一个错误,在你的情况下没有别的。一种更好的解决方案是计算单个字符串的十进制值。无需添加(+)它们,只需将它们连接(连接)以形成单个字符串。我建议这种方法是因为,这总是给出一个唯一的值,以后您可能需要知道各个字符串的十进制值。

String strVal1 = String.format(computeDecimal(str1));
String strVal2 = String.format(computeDecimal(str2));
String strVal3 = String.format(computeDecimal(str3));
.
.
.
String strValn = String.format(computeDecimal(strn));

String myVal = String.concate(strVal1,strVal1,strVal1,....strValn);

现在您可以按照自己的意愿对待您的字符串。

//This will give you a non conflicting result.

BigIntegers更好地实施上述方法。

希望这对您有很大帮助。

于 2012-08-18T13:29:01.843 回答