对于字符串中的每个字符,从右到左阅读每个字符

时间:2015-01-27 16:59:06

标签: java pseudocode

我有这个伪代码,它将二进制值转换为十进制值:

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)

3 个答案:

答案 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