Java 如何将字符串拆分为一个或两个新字符串

Java 如何将字符串拆分为一个或两个新字符串,java,arrays,input,split,calculator,Java,Arrays,Input,Split,Calculator,我正在做一个计算器,有些计算需要3条信息(例如,3*4),而另一些只需要2条信息(例如,5!) 我已使用以下代码将输入分为3部分: String[] parts = myInput.split(" "); String num1 = parts[0]; String operation = parts[1]; String num2 = parts[2]; 但这意味着当我只输入2个东西时,它就不起作用了 我怎样才能将3件或2件东西作为输入?如果不知道更多,我无法帮助您找到更好的设计,以适应共性

我正在做一个计算器,有些计算需要3条信息(例如,3*4),而另一些只需要2条信息(例如,5!)

我已使用以下代码将输入分为3部分:

String[] parts = myInput.split(" ");
String num1 = parts[0];
String operation = parts[1];
String num2 = parts[2];
但这意味着当我只输入2个东西时,它就不起作用了


我怎样才能将3件或2件东西作为输入?

如果不知道更多,我无法帮助您找到更好的设计,以适应共性和差异。但要回答上述问题


您可以使用
parts.length
来了解给定的许多变量,并使用这些变量来分支代码(即if-else语句)。

您不应该假设输入总是以3参数形式出现。相反,获取一个通用输入,根据用例对其进行解析。 在您的案例中,在您接受输入后,它归结为两个特定用例:

  • 操作单操作数的运算符-一元运算符
  • 对双操作数进行操作的运算符-二进制运算符
  • 对于每种情况,您都可以定义允许的运算符列表。例如:“啊!”将在案例1列表中,而“*”将在案例“2”中

    扫描字符串,查找操作员位置。[^0-9](表示数字以外的图案)。或者,您可以简单地对操作符进行一次简单的检查(通过创建自己的自定义方法)

    一旦你明白了这一点,验证你的字符串(可选)-例如,一元运算符有两个操作数是没有意义的

    完成此操作后,通过基于运算符拆分字符串来解析所需的操作数就相当容易了。那么计算就相当简单了


    希望这能有所帮助。

    我认为您需要检查数组的大小,并使用它来确定逻辑2对3输入。您需要的是一个数学解析器。看看这个问题的答案:用空格分隔是不正确的。您应该逐个检查charter,看看得到的是操作数还是运算符。您将知道是否必须停止(对于像阶乘这样的运算符)或继续查找另一个操作数。对于否决该问题的人,至少张贴您为什么这样做。为什么需要输入整个表达式?为什么不捕获一组由运算符分隔的数字字符?您可以使用
    Scanner
    类来获取下一个双精度和尽可能多的运算符(+、-、*、/、或=)。然后,输入第二个操作数后,可以计算字符并执行相应的操作。