2016-01-27 48 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