[英]Converting strings to integers and adding them in 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中整數到字符串的轉換非常容易,但是我發現字符串到整數的轉換要困難一些。
要解析整數-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.
最簡單的方法是使用Integer.parseInt(str1)
。 返回一個包含由字符串表示的值的int
。
valueOf()
返回一個Integer
對象,而不是一個int
原語。
由於您的人數太多,因此無法放入int中。 使用BigInteger類。
我不知道您的項目以及實際上是什么問題。 但是我從您的部分信息中猜測,正如您所解釋的,您有多組以位表示的字符串。
str1 = "1000110.....11";
str1 = "1110110.....01"; etc
將這些十進制值相加會產生不明確的結果,因為整數可以是多個整數值的總和。 請看下面的示例,其中總共有5種可能性(帶有正的十進制值)可以產生6。
1+5 = 6;
2+4 = 6;
3+3 = 6;
4+2 = 6;
5+1 = 6;
如果您以這種方式進行操作,那么您只是犯了一個錯誤,您的情況別無其他。 一種更好的解決方案是計算單個字符串的十進制值。 無需添加( + )它們,只需concat( join )它們以形成單個字符串。 我建議使用這種方法,因為,它始終提供唯一的值,以后您可能需要知道各個字符串的十進制值。
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更好地實現上述方法。
希望這對您有很大幫助。
聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.