// JavaScript Document
var person = prompt("GIVE INPUT", "");
var count = 0;
var array = person.split(",");
var freq = [];
var words = [];
//freq.fill(0);
//words.fill("");
//window.alert(freq[0]);
var i = 0, j = 0;
while (array.length > 0) {
var temp = array[0];
while (j < array.length) {
if (temp == array[j]) {
count = count + 1;
array.splice(j, 1);
//console.log(array);
j = 0;
}
else {
j = j + 1;
}
}
freq[freq.length] = count;
count = 0;
words[words.length] = temp;
}
window.alert(freq + "\n" + words);
问题在于,无论何时运行它都会发生无限循环并且没有显示输出,如果可能的话,我找不到错误请帮忙。此代码用于查找输入字符串中单词的频率,单词用逗号分隔。谢谢你。
答案 0 :(得分:0)
您在每次迭代时将循环变量j重置为0。此条件if(temp==array[j])
永远不会失败,因此j始终重置为0,因此while(j<array.length)
始终为真。
答案 1 :(得分:0)
答案 2 :(得分:0)
退出内部While循环后,您需要将j
重置为零。由于j
的增量值不允许它再次进入内部循环,因此array.length
没有减少而且我们正在获得无限循环。
// JavaScript Document
var person = prompt("GIVE INPUT", "");
var count=0;
var array = person.split(",");
var freq = new Array();
var words = new Array();
//freq.fill(0);
//words.fill("");
//window.alert(freq[0]);
var i=0,j=0;
while(array.length>0)
{
var temp=array[0];
while(j<array.length)
{
if(temp==array[j])
{
count=count+1;
array.splice(j,1);
//console.log(array);
j=0;
}
else
{
j=j+1;
}
}
freq[freq.length]=count;
count=j=0;
words[words.length]=temp;
}
window.alert(freq+"\n"+words);
答案 3 :(得分:0)
对于一致性更有用。您可以通过 for 循环替换内部 while 循环:
webBrowser1.Document.Body.OuterHtml
然而,使用数据结构(如地图)可以减少计数方法的整体复杂性 您脚本的基本部分可以简化为:
for(j=a.length-1; j>=0; j--)
if(temp==a[j]) {
count=count+1;
a.splice(j,1);
}