有 Java 编程相关的问题?

你可以在下面搜索框中键入要查询的问题!

将字符串转换为整数并在Java中添加它们

我有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) 个答案

  1. # 1 楼答案

    要分析整数-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.
    
  2. # 2 楼答案

    因为您的数字太大,所以无法放入整数中。请使用BigInteger

  3. # 3 楼答案

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

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

  4. # 4 楼答案

    我不知道你的项目和你的问题到底是什么。但我从你的部分信息猜到,正如你所解释的,在位表示中有多组字符串

    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更好

    希望这对你有很大帮助