计数器变量在if语句内不递增,首字母大写函数实现遇阻求助
问题分析与解决办法
嘿,我明白你卡在哪啦!咱们来一步步解决这个问题:
核心问题1:计数器变量iii没有实际递增
你代码里的iii + 2只是执行了加法计算,但没有把计算结果赋值回iii变量——JavaScript里这种表达式不会自动修改原变量的值,所以你的iii始终停留在原来的数值上。
要真正让iii递增,得用赋值运算符:
- 可以写
iii += 2(等价于iii = iii + 2) - 如果你只想递增1位,就用
iii++或者iii += 1
核心问题2:字符串操作没有生效
你写的translationString[iii].toUpperCase()不会直接修改数组里的元素,因为JavaScript的字符串是不可变的——这个方法会返回一个新的大写字符串,但不会改变原字符串。所以你需要把新的字符串重新赋值回数组对应的位置:
translationString[iii] = translationString[iii].toUpperCase();
修改后的完整if代码块
if (punctuation.indexOf(translationString[iii]) != -1) { console.log(iii+ ": " +translationString[iii]); console.log("iii is on: " + iii); iii += 2; // 这里改成赋值式递增 console.log("after increment, iii is on: " + iii); // 额外加个边界判断,避免索引越界报错 if (iii < translationString.length) { // 精准只把首字母大写,保留后续字符原样 translationString[iii] = translationString[iii].charAt(0).toUpperCase() + translationString[iii].slice(1); } }
这样修改后,计数器iii就能正确递增,并且下一个单词的首字母也会被改成大写,最终就能得到你期望的输出"this is a! Test."啦。
内容的提问来源于stack exchange,提问作者Jesse M
相关产品推荐
相关产品推荐

