// Write a program to check whether or not two arrays are identical in size, and hold identical values
string1 = prompt("String 1?");
string2 = prompt("String 2?");
compareNum = 0;
for(i=0; i<string1.length; i++)
{
for(j=i; j<string2.length; j++)
{
if (string1.charAt(i) == string2.charAt(j))
{
compareNum++;
break;
}
}
};
alert("We found " + compareNum + " identical value(s).");
我已经设法构建了一个相对简单的字符串比较程序,但现在我遇到的问题是它输出的结果。
例如,如果我输入“Jeansy”和“Jeansy” - 我得到“我们发现了6个相同的值”的回答。
如果我输入“Molanza”和“Molanza” - 我得到“我们发现了9个相同的值”的回复。
当然应该只有7?
或者'a'被计算两次?无论如何我可以否定这个吗?
顺便说一句,我正在考虑所有字符串。
提前致谢!
答案 0 :(得分:5)
你将string1中的每个字母与string2中的每个字母进行比较。如果有重复的字母,您将获得重复的结果。
试试这个:
string1 = prompt("String 1?");
string2 = prompt("String 2?");
compareNum = 0; // why are you using the Number contructor? Unneeded.
l = Math.min(string1.length, string2.length);
for( i=0; i<l; i++) {
if( string1.charAt(i) == string2.charAt(i)) compareNum++;
}
// do something with compareNum.
答案 1 :(得分:2)
您循环遍历字符串1中的每个字符并将其与字符串2中的每个字符进行比较 - 但是您将在字符串2中循环字符串1中的每个字符。
每个字符串的索引应该相同;你不需要两个循环。
如何处理长度不同的字符串取决于您的要求。