首页 > 解决方案 > 循环如何与堆栈一起工作?它是否将 * 更改为 0 和 1?

问题描述

String input = stack.pop();

if ((index = input.indexOf('*')) != -1) {

    for (char c = '0'; c <= '1'; c++) {
        input = input.substring(0, index) + c +
            input.substring(index + 1);
        stack.push(input);
    }
}

我很难理解 for 循环中发生了什么。有人可以澄清它是如何迭代的吗?我不习惯将数组长度以外的东西作为第二个参数。

标签: java

解决方案


当您编写这样的 for 循环时,根据 ascii 表,当您增加 c 时,c 的值 = 48 它上升到 49,这也等于 1 从 ascii。所以现在如果你知道你可以把你的代码改成这个

for (int c = 48; c <= 49; c++)
{
    //your code
}

它是一样的。但是如果你像你所做的那样连接字符串,值 48 被转换为 0,所以 * 将被替换为 0,在下一次迭代中将被替换为 1。


推荐阅读