【发布时间】:2017-03-02 17:51:19
【问题描述】:
我最近开始学习C#并尝试在控制台中编写一个类似于计算器的程序。我已经用两个整数完成了它并且它有效。现在我正在尝试编写允许更多用户输入进行计算的代码。
问题是,我一直坚持从用户输入中拆分字符串。例如,假设他写道:
1 + 2 * 3 - 5 我想在空间发生的地方拆分它。当用户在其间使用不止一个空格 时,它仍应拆分。就像1,2,,3,,,,5,6,,,4 一样:当使用多个逗号时,如何用逗号分隔?我只想要整数(以及示例 1 中的运算符)。
我已经尝试过使用[string_name].Split(' ') 和[string_name].Split(','),但它似乎只忽略了我感兴趣的用户输入值之间的 ONE char 变量。这使我无法将值放入数组中并且将它们转换为 int。
关于我的第一个示例的最后一个问题 (1 + 2 * 3 - 5):
除了接受多个空格/逗号之外,你怎样才能有效地分割这个字符串输入,保留 int 输入和运算符?我的想法是保存每个不均匀的输入值(1、2、3、5)和每个每个数组中的偶数输入值(+、*、-、/)。我考虑将运算符放入具有 4 种情况的 switch 中,并将带有数字的 string_array 转换为整数。之后,我会将它们放在与使用for 的用户输入完全相同的顺序中。
问题是:假设我正确实现它,我认为计算会从左到右解决,而不考虑'*'和'/'的优先级。
有人知道如何使用“高级”计算器有效地解决这个问题吗?我想了很长时间并尽我所能,但它似乎不起作用.. . 让我有点难过。我真的很想以某种方式解决这个问题。
【问题讨论】:
-
使用
StringSplitOptions,您可以指定忽略空条目。先看看Split文档。 -
看看this也许能帮到你。