我正在尝试在 JavaScript
中运行以下 while
循环:
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);
}
我只是传递一个索引和字符串
returnSubstring(someIndex, someString);
它总是崩溃。我想我至少在 while
循环中进行了一轮。 (我得到 1 '不'
)
我在这里做错了什么?
当索引为 0 或 1 时它也有效。但其他数字则不然
最佳答案
你应该总是递减i
,否则你将永远不会结束循环,并且 J 将出界。另外...您应该var j = 0
,否则您将跳过第一个字符。
例如:“文本”
和i == 2
您开始于:
"T"
,没有逗号,向前移动j
,i
仍然是2。
"e"
,没有逗号,向前移动j
,i
仍然是2。
"x"
,没有逗号,向前移动j
,i
仍然是2。
"t"
,没有逗号,向前移动j
,i
仍然是2。
""(空字符串)
,无逗号,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
}
关于javascript while循环没有结束,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/21096301/