在textBox中转换数字的问题

时间:2010-12-25 15:09:20

标签: c# algorithm binary-search

以下代码属于二进制搜索算法。用户在textbox1中输入数字,并在textbox2中输入他想要使用binarysearch查找的数字。当我在textBox2中输入例如16并在我评论的行上放置断点时,我看到searchnum的值为10.

我认为它会转换为十六进制。我不知道为什么。你能救我吗?

private void button1_Click(object sender, EventArgs e)
{
    string[] source = textBox1.Text.Split(',');
    int[] nums = new int[source.Length];
    for (int i = 0; i < source.Length; i++)
    {
        nums[i] = Convert.ToInt32(source[i]);
    }

    string str_searchnum = textBox2.Text;
    int searchnum = Convert.ToInt32(str_searchnum); // str_searchnum shows the value 16 but searchnum shows 10
    int first = 0;

    int last = nums.Length - 1;

    while (1 < nums.Length - 1)
    {
        int mid = (int)Math.Floor(first + last / 2.0);

        ////if (first < last)
        ////{
        ////    break;
        ////}

        if (searchnum < nums[mid])
        {
            last = mid - 1;
        }
        if (searchnum > nums[mid])
        {
            first = mid + 1;
        }
        else
        {
            MessageBox.Show(nums[mid].ToString());
        }
    }
}

2 个答案:

答案 0 :(得分:4)

检查调试器是否设置为使用十六进制表示法显示值?您可以通过右键单击观察窗口来找到此选项。

如果不是这样,请逐步完成整个方法。 str_searchnum的价值是什么?

虽然我个人更喜欢int.TryParse(),但Convert.ToInt32()应该经过充分测试,而不是进行任何基本转换。

答案 1 :(得分:1)

为什么不使用Array.BinarySearch?此外,您的循环条件(可能)是错误的。