我有这个伪代码,它将二进制值转换为十进制值:
int powTwo = 1;
int dec = 0;
for each character in the string, starting with the last,
if (char == '1')
dec += powTwo;
powTwo *= 2;
我如何为这里指定的每个循环编写,它查看字符串中的每个字符,从最后一个开始? 到目前为止我已经
了for(Character c : someString)
答案 0 :(得分:2)
正如Cory所说,你可以从最后一次迭代并比较每个角色。
另一种方法就是这样,你的问题中提到的每个循环都有一个
String reversedString=new StringBuffer(inputString).reverse().toString();
for(char c:reversedString.toCharArray()){
// Do Whatever You want to Do here
}
For-each循环(高级或增强For循环):
Java5中引入的for-each循环。它主要用于遍历数组或集合元素。 for-each循环的优点是它消除了bug的可能性并使代码更具可读性。
for-each循环的语法:
for(data_type variable : array | collection){}
答案 1 :(得分:1)
我将假设这是家庭作业,你应该坚持使用伪代码,而不是使用其他可用的快捷方法。
伪代码遗漏的唯一东西就是for循环。在您的真实代码中,我不会使用for-in
,而是向后走字符串:
int powTwo = 1;
int dec = 0;
// using the length of the string, start with a counter that is the length
// minus 1, decrement it by 1 until we get to 0
for (int i = someString.length() - 1; i >= 0; i--) {
// Get the character at position i in the string
char currentChar = someString.charAt(i);
// Check for a "1"
if (currentChar == '1') {
dec += powTwo;
}
powTwo *= 2;
}
答案 2 :(得分:1)
我建议使用StringBuilder#reverse。您可以撤消String
,只需循环遍历每个字符,而不会产生任何混淆for-loop
String initialValue = "Hello World!";
StringBuilder sb = new StringBuilder(initialValue);
String reversed = sb.reverse().toString();
char[] chars = reversed.toCharArray();
for (char c : chars) {
// Check for a "1"
if (c == '1') {
dec += powTwo;
}
powTwo *= 2;
}
// output: !dlroW olleH