javascript while while循环没有结束

时间:2014-01-13 16:28:04

标签: javascript string if-statement while-loop substring

我正在尝试在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时也可以。但其他数字,没有

4 个答案:

答案 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++) { ... }

这样可以防止导致无限循环的大量逻辑错误。