2012-08-15 60 views
1

加入他們,我有4個字符串:將字符串轉換爲整數,並在Java中

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中是很容易的,但我發現串到整數轉換有點困難。

+0

可能重複的[如何將字符串轉換爲int在Java?](http://stackoverflow.com/questions/5585779/how-to-convert-string-to-int-in-java) – Sjoerd 2012-08-15 20:08:28

+0

感謝您的回答。我忘記說我的字符串長度是32.然後integer.valueOf()不起作用。 :( – 2012-08-15 20:10:12

+0

你真的想把二進制轉換爲整數嗎?字符串只包含0和1嗎?它們代表有符號還是無符號數字?數字是否適合int?int的最大數量是20億,所以32個字符的數量不適合int。 – Sjoerd 2012-08-15 20:12:17

回答

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. 
+0

是的,這是很好的答案,但實際上當字符串長度爲32時,這不起作用。@ggreiner – 2012-08-15 20:13:55

+0

BigInteger是對象嗎?這意味着,我應該定義自己或它是在java中預定義的對象? – 2012-08-15 20:18:59

+0

[BigInteger](http://docs.oracle.com/javase/1.5.0/docs/api/java/math/BigInteger.html)是一個類,請看文檔。 – ggreiner 2012-08-15 20:19:49

2

最簡單的方法就是使用Integer.parseInt(str1)。返回包含由字符串表示的值的int

valueOf()返回一個Integer對象,而不是一個int原語。

+1

但是autoboxing會照顧到,所以這不是問題。 'int x = Integer.valueOf(「123」);''會因爲自動裝箱而工作得很好。 – 2012-08-15 20:38:38

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; 

如果你這樣,你只是做了錯誤,沒有別的你的情況進行。 一個更好的解決方案是, 可以計算單個字符串的十進制值。而不是加入(+)他們,只是concat(加入)他們形成一個單一的字符串。 我建議這種方法,因爲它總是提供一個唯一的值,以後您可能需要知道單個字符串的十進制值。

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上面的方法。

希望這可以幫助你很大。