如何通过传递一个整数来实现一个返回字符串的方法,而不需要很多if语句?

Seb*_*URE 3 java if-statement simplify

我需要一些建议.我有这样的方法:

Private String myMethod(int a_var) {
    String l_myString = "Hello";
    if (a_var == 1) {
        l_myString = "Hi"; 
    }
    if (a_var == 2) {
        l_myString = "Hey";
    }
    return l_myString
}
Run Code Online (Sandbox Code Playgroud)

等等......我有10个这样的声明,老实说我不知道​​如何简化这个.我期待在网上找到如何做到这一点,但似乎我的搜索并不准确,所以如果我能有一些建议!

Som*_*Guy 6

如果您的方法是按照它的显示方式构建的,并且值是预定义的,那么您也可以使用数组;

final static String[] output = {"Hey", "Ho", "Hallo", "Hi"};
...
public String method(int input) {
    return input-1 >= 0 && input-1 < output.length ? output[input-1] : "hello";
}
Run Code Online (Sandbox Code Playgroud)

编辑:确保输出在范围内

  • 确定您的编辑,但您仍然假设所有索引都是连续的,并且每次仍然分配数组 (3认同)

Kon*_*kov 5

如果您可以在数字和问候语之间进行预定义的映射,则可以执行以下操作:

public class Greeter {
    private Map<Integer, String> mapping = new TreeMap<Integer, String>() {{
        put(1, "Hi");
        put(2, "Hey");
    }};

    public String myMethod(int number) {
        String greet = mapping.get(number);
        return mapping != null ? mapping : "Hello";
    }
}
Run Code Online (Sandbox Code Playgroud)

  • 我可能会说真正不必要的并发症.特别是实例块. (3认同)
  • 提示:使用`Map.getOrDefault`获得更好的代码 (2认同)
  • @MouseEvent我不同意.这段代码有什么问题?这也是我想到的可能性之一 (2认同)