创建while循环时出现问题

时间:2019-02-11 18:05:25

标签: c#

因此,我在下面被问到这个问题,我最初创建了一个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;
            }
        }

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;
}