我想知道是否有更优雅的方法来编写带有大量||的if语句 在java中.我给字母字母赋予了不同的值:
A,O,I,B,T,S,M,N -> 1
C,D,F,G -> 5
W,Y,Z,H,Q -> 10
Run Code Online (Sandbox Code Playgroud)
所以,我想检查一个给定的字母,如果等于第二组之一,例如得到5.现在,我正在检查这样:
String value;
if (getLetter().equals("?")|| getLetter().equals("O") ||
getLetter().equals("I") || getLetter().equals("B") ||
getLetter().equals("T") || getLetter().equals("S") ||
getLetter().equals("N") || getLetter().equals("N"))
value = "1";
Run Code Online (Sandbox Code Playgroud)
有更好的方法吗?
三种选择:
假设您使用的是Java 7或8,请使用switch语句:
switch (getLetter()) {
case "A":
case "O":
case "I":
case "B":
...
value = "1";
...
}
Run Code Online (Sandbox Code Playgroud)使用三个Set<String>对象
Map<String, String>最后一个选项是这样的:
// You'd presumably initialize this in one place...
Map<String, String> map = new HashMap();
map.put("A", "1");
map.put("O", "1");
map.put("I", "1");
...
map.put("C", "5");
map.put("D", "5");
...
String value = map.get(getLetter());
Run Code Online (Sandbox Code Playgroud)
String letter = getLetter();
if ("AOIBTSMN".contains(letter))
value = "1";
else if ("CDFG".contains(letter))
value = "5";
else if ("WYZHQ".contains(letter))
value = "10";
Run Code Online (Sandbox Code Playgroud)
不是最佳的,而是短暂的,清晰的和自我解释的.
| 归档时间: |
|
| 查看次数: |
720 次 |
| 最近记录: |