我有这个代码,它是我目前正在制作的计算器的一部分。
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,它应该输出。如果我尝试使用除法或乘法完全相同的代码,程序崩溃。看起来很奇怪,代码与添加完美配合。有什么帮助吗?
答案 0 :(得分:2)
这是因为这一行:
string c2 = a.Substring(b);
c2
等于“-3”,因此转换为-3
。 6 - -3
是9。
将行更改为:
string c2 = a.Substring(b + 1);
还有许多其他问题,代码需要严格的重构,但这有点偏离主题。
答案 1 :(得分:1)
当您对c2
进行子串时,b
为1
。 "6-3".Substring(1)
将返回-3。
首先输入的子串参数是向前移动多远。您需要移动索引+ 1以移过运算符。
这使您的数学问题6 - - 3
答案 2 :(得分:0)
那是因为您创建了-3
的子字符串,而不是3
。 string 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]) )
}