减法,乘法和除法脚本无法正常工作

时间:2017-02-09 22:20:43

标签: c# visual-studio

我有这个代码,它是我目前正在制作的计算器的一部分。

class Program
{
    static void Main(string[] args)
    {
        string a = "6-3";/*This is supposed to be entered in a textbox by a user*/

        int b = a.IndexOf(("-"));

        string c = a.Substring(0, b);

        int num1 = Convert.ToInt32(c);

        int b2 = a.IndexOf(("-"));
        string c2 = a.Substring(b);
        int num2 = Convert.ToInt32(c2);
        if(a.Contains("-"))
        {
            int an = num1 - num2;
            string ans = Convert.ToString(an);
            Console.WriteLine(ans);
        }
    }
}

问题是这导致9而不是3,它应该输出。如果我尝试使用除法或乘法完全相同的代码,程序崩溃。看起来很奇怪,代码与添加完美配合。有什么帮助吗?

3 个答案:

答案 0 :(得分:2)

这是因为这一行:

 string c2 = a.Substring(b);

c2等于“-3”,因此转换为-36 - -3是9。

将行更改为:

 string c2 = a.Substring(b + 1);

还有许多其他问题,代码需要严格的重构,但这有点偏离主题。

答案 1 :(得分:1)

当您对c2进行子串时,b1"6-3".Substring(1)将返回-3。  首先输入的子串参数是向前移动多远。您需要移动索引+ 1以移过运算符。

这使您的数学问题6 - - 3

答案 2 :(得分:0)

那是因为您创建了-3的子字符串,而不是3string c2 = a.Substring(b);应为string c2 = a.Substring(b+1);

更短的版本是:

if(a.Contains("-")) 
{
    string[] nums = a.split('-')
    Console.WriteLine( ((int)nums[0]) - ((int)nums[1]) )
}