我最近开始学习C#并尝试在控制台中编写类似于计算器的程序。我已经用两个整数完成了它并且它有效。现在我正在尝试编写代码,允许更多的用户输入来计算。
问题是,我一直坚持从用户输入中分割字符串。所以,比方说,他写道:
1 + 2 * 3 - 5
我想把它分开到空间发生的地方。当用户在其间使用多于一个空格时,它仍应分裂。它与1,2,,3,,,,5,6,,,4
相同:当使用多个逗号时,如何用逗号分隔?我只想要整数(以及示例1中的运算符)。
我已经尝试使用[string_name].Split(' ')
和[string_name].Split(',')
,但它似乎只忽略了我感兴趣的用户输入值之间的一个char变量。这使我无法放置值在数组中并将它们转换为int。
关于我的第一个示例(1 + 2 * 3 - 5
)的最后一个问题:
除了接受多个空格/逗号,如何有效地分割这个字符串输入,保持int输入和操作符?我的想法是保存每个不均匀的输入值(1,2,3,5)和每个甚至每个数组中的输入值(+,*, - ,/)。我考虑将运算符放入{4}的switch
中,并将string_array与数字转换为整数。在那之后,我会将它们全部放在完全相同的顺序中,就像使用for
的用户输入一样。
事情是:假设我正确实现它,我认为计算将从左到右解决,而不考虑'*'和'/'的优先级。
有人知道如何使用“高级”计算器有效地解决这个问题?我已经想了很长时间并尽力而为,但它似乎没有用......让我伤心一点。我真的想以某种方式解决这个问题。
答案 0 :(得分:2)
对于第一个问题的答案,您可以将重载传递给忽略空条目的Split
:
str.Split(new[] { ' ' }, StringSplitOptions.RemoveEmptyEntries);
传统上,你需要完全解析字符串,以便处理括号和没有空格的情况:例如4*(1+2)
。