如何比较2个字符串?

时间:2014-11-18 05:27:46

标签: c# wpf

我正在制作打字游戏,我需要逐个比较生成的字符串和输入字符串,然后计算%准确度。

但似乎缺少一些东西,因为这个功能没有比较好。

我做错了吗?

private void Button_Click(object sender, RoutedEventArgs e)
    {
        int percentage = 0;
        int mistakes = 0;
        string input = TextBox1.Text;

        string letter = TextBox2.Text;
        char[] letters1 = letter.ToCharArray();
        char[] input1 = input.ToCharArray();

        for (int j = 0; j < input1.Length; j++)
        {
            if (input1[j] != letters1[j])
                mistakes = mistakes +1;   

            else if (input1[j] == letters1[j])
                mistakes = mistakes;
        }

        percentage = 100 - ((mistakes / letters1.Length) * 100);
        Label2.Content = percentage;


    }

2 个答案:

答案 0 :(得分:1)

您正在执行整数运算并丢失除法结果的小数部分。当你除以两个整数时,结果是另一个整数(你丢失了小数部分)。

percentage = 100 - ((mistakes / letters1.Length) * 100);

鉴于上面的代码,并且假设letters1长度为30个字符并且有20个错误,那么20 / 30(或可用的总字符数中的任何错误,除非每个< / em>字符错误),将导致:

percentage = 100 - ((20 / 30) * 100);

          // 100 - ((0) * 100) == 100

将其中一个值转换为double应该保留该部门的小数部分:

percentage = 100 - ((mistakes / Convert.ToDouble(letters1.Length) * 100);

        // = 100 - ((20 / 30.0) * 100) == 100 - ((0.6666666) * 100) == 33.333333

答案 1 :(得分:0)

希望这适合你。

private void Button_Click(object sender, RoutedEventArgs e)
    {
        float percentage = 0;
        float mistakes = 0;
        string input = TextBox1.Text;

        string letter = TextBox2.Text;
        char[] letters1 = letter.ToCharArray();
        char[] input1 = input.ToCharArray();

        for (int j = 0; j < input1.Length; j++)
        {
            if (input1[j] != letters1[j])
            {
                mistakes++; 
            }

        }

        percentage = 100 - ((mistakes / letters1.Length) * 100);
        Label2.Content = percentage.ToString();
    }