java - 循环如何与堆栈一起工作?它是否将 * 更改为 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 循环中发生了什么。有人可以澄清它是如何迭代的吗?我不习惯将数组长度以外的东西作为第二个参数。
解决方案
当您编写这样的 for 循环时,根据 ascii 表,当您增加 c 时,c 的值 = 48 它上升到 49,这也等于 1 从 ascii。所以现在如果你知道你可以把你的代码改成这个
for (int c = 48; c <= 49; c++)
{
//your code
}
它是一样的。但是如果你像你所做的那样连接字符串,值 48 被转换为 0,所以 * 将被替换为 0,在下一次迭代中将被替换为 1。
推荐阅读
- jquery - Laravel 会话和表列隐藏显示与 jquery 用户偏好
- python - 使用列名从 pandas 调用列时出错
- python - 如何使用 Python 代码以表格格式打印多个 txt 文件的输出?
- jquery - 如何在月份编号的文本中显示月份
- python - 通过正则表达式更新数据框下的列
- reactjs - 如何将参数传递给 createAsyncThunk?
- scala - Intellij IDEA 无法解析隐含符号(scala tagless final)
- javascript - 除非我真正查看网页,否则 Selenium 将无法工作(也许是 JavaScript 的反爬虫机制?)
- java - 安装詹金斯,无法在 Windows 10 中打开端口 8080
- sql - SQL 列比较