【问题标题】:How can I parse operands and operators in my calculator project?如何在我的计算器项目中解析操作数和运算符?
【发布时间】:2011-06-19 22:10:44
【问题描述】:

我在空闲时间从事一个计算器项目,以在暑假期间保持我的 Java 技能,但我遇到了障碍。到目前为止,一切都很好,基本上完成了;我只是想添加一些功能。

我试图弄清楚如何设置它,而不是键入 5 然后单击 +-/* 然后键入第二个数字,如何让用户输入number1(operator)number2。我主要只是想弄清楚如何在运算符或键字符串之前获取所有内容,然后在其之后获取所有内容并使它们成为单独的字符串,然后我可以解析它们并将它们添加到我的其余代码中。我只是忘记了如何在+ 之前和之后作为单独的东西获取所有内容!我假设我将使用indexOf() 和子字符串。

【问题讨论】:

  • 恭敬地不同意 SLaks。正则表达式不太擅长解析,特别是当他希望允许用户输入带有嵌套括号的复杂方程时(真的应该允许这种可能性)。同样,您需要的是解析器。考虑使用 Java 与生俱来的 JavaScript 能力来解析您的方程式。
  • 避免处理括号。没有括号,一个正则表达式可能就足够了;带括号它变成了语法,你需要一个编译器。有关正则表达式的一些信息,请参阅 Matcher 类。

标签: java string substring indexof


【解决方案1】:

是的,使用 indexOfsubstring(假设这是一个不允许括号或嵌套的简单计算器 - 如果它更复杂,则使用解析器)。

substring 有两种对您有用的形式:

String substring(int startIndex)
String substring(int startIndex, int endIndex)

记住endIndex独占,所以它不会包含指定的索引。

【讨论】:

  • 那么我该怎么做呢,介意给我一个例子,比如字符串 44+22?即在哪里放东西?由于某种原因,今天对此感到非常困惑!谢谢你的帮助!
  • 所以,indexOf("+") 会给你分割点。然后,您可以使用substring(0, splitPoint)substring(splitPoint + 1) 分别获取前缀和后缀。请注意,如果拆分点位于字符串的开头或结尾,则需要进行一些特殊处理。
  • 啊,好的,完美,成功了!谢谢你一百万,如果我有 15 个代表,我会支持你!
  • @Calvin Moss,我认为你可以接受这个答案——点击复选框。
猜你喜欢
  • 1970-01-01
  • 2014-12-17
  • 2015-09-30
  • 1970-01-01
  • 1970-01-01
  • 2016-07-31
  • 1970-01-01
  • 1970-01-01
  • 2017-10-14
相关资源
最近更新 更多