我正在尝试在while
中运行以下JavaScript
循环:
function returnSubstring(i, theString) {
var j = 1;
while (i > 1) {
if (theString.charCodeAt(j) == ',') {
i--;
}
else {
<% System.out.println("nope, not a comma"); %>
}
j++;
}
var value = theString;
var subString = value.substring(j, value.indexOf(",", j+1));
alert(subString);
}
我只是传递索引和string
returnSubstring(someIndex, someString);
它一直在崩溃。我想至少在while
循环中获得一轮。 (我得到1 'nope'
)
我在这里做错了什么?
当index为0或1时也可以。但其他数字,没有
答案 0 :(得分:1)
你应该减少我
您确定可以这样做:
<% System.out.println("nope, not a comma"); %>
你为什么不用:
document.write()
答案 1 :(得分:1)
你应该总是递减i
,否则你永远不会结束你的循环,J将会超出界限。另外......你应该var j = 0
,否则你会跳过第一个角色。
例如:"Text"
和i == 2
您的开始于:
"T"
,没有逗号,移动j
前进,i
仍然是2.
"e"
,没有逗号,移动j
前进,i
仍然是2.
"x"
,没有逗号,移动j
前进,i
仍然是2.
"t"
,没有逗号,移动j
前进,i
仍然是2.
""(empty string)
,没有逗号,j
现在不在界限内,向前移动j
,在i
移动{2}。
^这最后一步永远重复。
相反,请将您的代码更改为:
function returnSubstring(i, theString) {
i = i > theString.length() ? theString.length() : i; // don't go too far.
var j = 0; // Start at 0
while (i >= 1) { // `i > 1` is stopping the code 1 character earlier
if (theString.charCodeAt(j) != ',') { // this `if` is not required
console.log("nope, not a comma"); // No JAVA code, please
}
i--;
j++;
}
var value = theString;
var subString = value.substring(j, value.indexOf(",", j+1));
// alert(subString); // not necessary
return subString; // return the value
}
答案 2 :(得分:0)
如果i
处的字符不是逗号,则不会递减i
。我建议使用for循环,以便i
无论循环中的内容如何都会递减:for (; i > 1; i--)
答案 3 :(得分:0)
我建议你的循环遍历输入字符串,如下所示:
for(var i = 0; i < theString.length; i++) { ... }
这样可以防止导致无限循环的大量逻辑错误。