【问题标题】:C# Calculator Text Input Validation [closed]C#计算器文本输入验证
【发布时间】:2013-07-20 06:15:04
【问题描述】:

我目前正在编写一个计算器应用程序。该应用程序的一部分是一个简单的计算器,其工作方式类似于 Windows 中的计算器(使用 Windows 8)。它可以解析在文本框中输入的数字。但是,如果用户输入的格式不正确,例如 5 * * 5,则会出错。我希望它检查之前输入的字符以查看它是否是运算符,如果是,则在用户键入时将其替换为 5 * / 5 以变为 5 / 5。它还需要检查括号的顺序是否正确,例如 () 或 () 不是 )(。需要检查的另一件事是输入的数字只有一个小数点。例如,4.38585 + 5.32948 . 我已经将键条目限制为仅限数字和运算符。我已经检查了一段时间,但没有看到任何解决方案。

【问题讨论】:

  • 请给我们一些代码。
  • 显示你的一些代码
  • 看来你有点懒惰,要求我们做你的工作。你知道你需要什么,只是问我们......如果你会为操作添加一个字符并在你获得新的操作字符时更改它,那么你可以处理 5 * / 5 字符串
  • 啊问题很清楚,你还没有尝试编写任何代码......你到底要如何通过你的课程?

标签: c# .net winforms validation


【解决方案1】:

如果您要允许用户输入一个表达式,然后让他按下“计算”按钮,那么您不应该即时验证事物。让用户犯错,因为他无论如何都会犯错。用户将想要返回并编辑他输入的文本。您的编辑规则将使这变得困难或不可能。或者更糟糕的是,不一致。

例如,假设用户输入4.35*7.29

然后他意识到他想分裂。但是您的编辑规则不允许他删除*,因为这会导致无效号码。而且他不能先输入/再删除,因为这样做会给出/**/,两者都无效。您是否要在编辑时允许临时无效表达式,但在用户键入时不允许它?这将是不一致的,并且不会阻止您的评估者必须再次进行错误检查并通知用户。

如果您愿意,可以将击键限制为数字和运算符,但不要尝试验证用户输入的形式。让他输入 **)9(// 如果他愿意。在解析时处理错误——在用户按下计算按钮之后。

现在,如果您的应用程序像 Windows 计算器一样工作,因为它在用户输入值和运算符时保持运行总计,那是另一回事。但你所说的只会令人沮丧。我当然不想使用它。

【讨论】:

    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2014-06-04
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2015-10-02
    相关资源
    最近更新 更多