一个变量的几个字符串输入

Cia*_*ara 6 java string if-statement input

有没有其他方法来缩短这种情况?

if (oper.equals("add") || oper.equals("Add") || oper.equals("addition") ||
oper.equals("Addition") || oper.equals("+"))
Run Code Online (Sandbox Code Playgroud)

我只是想知道我能做些什么来'快捷'这个.当提示在我的简单计算器程序中执行何种操作时,用户将键入一个字符串.我们的教授说我们的程序应该接受用户是否用小写字母输入"添加"或"添加"...或者是我应该这样做的唯一方法?

Roh*_*ain 9

您可以使用前String#equalsIgnoreCase(String)四个字符串: -

if (oper.equalsIgnoreCase("add") || 
    oper.equalsIgnoreCase("addition") || 
    oper.equals("+"))
Run Code Online (Sandbox Code Playgroud)

如果字符串数量增加,最好使用a List,并使用其contains方法.但仅针对这些输入,您只能遵循此方法.


另一种方法是使用String#matches(String)方法,它采用正则表达式: -

if (oper.matches("add|addition|[+]")
Run Code Online (Sandbox Code Playgroud)

但是,你真的不需要正则表达式.特别是,这种方法可能会变得更难以获得更多输入.但是,这只是这种情况的一种方式.所以,你可以选择其中之一.第一个是第一个更容易观看.


或者,您也可以使用enum存储operators,并在任何地方传递它的实例,而不是string.使用它会更容易.枚举看起来像这样:

public enum Operator {
    ADD,
    SUB,
    MUL,
    DIV;
}
Run Code Online (Sandbox Code Playgroud)

您可以根据自己的需要进行增强.请注意,由于您正在获取用户输入,因此您首先需要根据它来识别相应的枚举实例,并且从那里开始,您可以处理该枚举实例,而不是String.