2016-01-27 344 views
1

如何在不使用乘法,除法或mod的情況下做到這一點?將字符串轉換爲整數

我提出的解決方案,但它需要乘法。

public StringBToInt(String b) { 
    int value = 0; 
    for(int z = 0; z < b.length(); z++) { 
     value = value * 2 + (int)b.charAt(i) - 48; 
    } 
} 

編輯:抱歉!只允許3個Java API。長度(),的charAt()和equals()方法

+0

此作業問題顯然需要另外。你可以使用數組或列表嗎?輸入字符串是固定的長度嗎? –

+0

是的,它允許加和減。不,你不能使用數組或列表。只有整數和字符串charAt(),長度()和等於。 –

+0

輸入長度怎麼樣?它是固定的輸入長度,是否存在一定範圍內的變化,還是可能無限長? –

回答

2

不用乘法,使用位移位運算符:

public StringBToInt(String b) { 
    int value = 0; 
    for(int z = 0; z < b.length(); z++) { 
     if(b.charAt(z) == '1'){ 
      shift = b.length()-z-1; 
      value += (1 << shift); 
     } 
    } 
} 
+0

'的浪費版本if(b.charAt(z).equals('1' ){'缺少一個右括號並且不起作用 - 原始類型'char'沒有'equals'方法! – Clashsoft

+0

你說得對,它滑出來了。 – Matt

1

使用Integer.valueOf(String, int)方法:

Integer.valueOf('10101',2) 
1

嘗試使用Integer.parseInt(..)這樣的:

int value = Integer.parseInt(b, 2); 

b Ofcourse是二進制字符串。

+0

'b.toCharArray()[i]'是b.charAt(i)' – Clashsoft

0

您可以使用該方法Integer.parseInt做到這一點。

String binary = "101010" 
int value = Integer.parseInt(binary, 2); 

的「2」在Integer.parseInt裝置解析String在基座2