因此,我在下面被问到这个问题,我最初创建了一个for循环来执行此操作,效果很好,但被告知我也可以在while循环中执行此操作,这是我现在正在尝试的操作,但是我不确定我在下面的代码中出错了,因为出现了indexoutofrange异常。
问题4 - 编写一个比较两个字符串并输出相同位置的字符数的软件。 例如。 “ helloworld”和“ worldhello”将输出2,因为在同一位置有两个l 比较下面的字符串以计算答案。
String1-“ helloworld” String2-“ worldhello”
我的for循环代码非常有效
string string1 = "helloworld";
string string2 = "worldhello";
int list = 0;
for (int i = 0; i < string1.Length; i++)
{
if (string1[i] == string2[i])
{
list = list + 1;
}
}
Console.WriteLine(list);
现在这是我的while循环代码,无法正常工作
string string1 = "helloworld";
string string2 = "worldhello";
int i = 0;
int total = 0;
while (i < string1.Length)
{
i++;
if (string1[i] == string2[i])
{
total = total + 1;
}
}
答案 0 :(得分:1)
您快到了!
for循环(i++
)的第三部分将在每次迭代结束时运行 ,因此您不应该将i++;
作为while的第一条语句循环版本。您应该将其作为最后一条语句:
while (i < string1.Length)
{
if (string1[i] == string2[i])
{
total = total + 1;
}
i++;
}
通常,以下形式的for循环:
for (x ; y ; z) { w; }
可以这样写成while循环:
x;
while (y) {
w;
z;
}