Java 编写包含大量数据的if语句的更好方法||
我想知道是否有一种更优雅的方法可以用java编写包含大量| |的if语句。 我给字母表中的字母赋予了不同的值:Java 编写包含大量数据的if语句的更好方法||,java,if-statement,Java,If Statement,我想知道是否有一种更优雅的方法可以用java编写包含大量| |的if语句。 我给字母表中的字母赋予了不同的值: A,O,I,B,T,S,M,N -> 1 C,D,F,G -> 5 W,Y,Z,H,Q -> 10 所以,我想检查一个给定的字母,如果它等于第二组中的一个,例如,得到5。 现在我这样检查: String value; if (getLetter().equals("Α")|| getLetter().equals("O") ||
A,O,I,B,T,S,M,N -> 1
C,D,F,G -> 5
W,Y,Z,H,Q -> 10
所以,我想检查一个给定的字母,如果它等于第二组中的一个,例如,得到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";
有更好的方法吗?三个选项:
使用switch语句,假设您使用的是Java 7或Java 8:
switch (getLetter()) {
case "A":
case "O":
case "I":
case "B":
...
value = "1";
...
}
使用三个集合对象
最好是用地图
最后一个选项类似于:
// 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());
三种选择:
使用switch语句,假设您使用的是Java 7或Java 8:
switch (getLetter()) {
case "A":
case "O":
case "I":
case "B":
...
value = "1";
...
}
使用三个集合对象
最好是用地图
最后一个选项类似于:
// 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());
您可以根据需要创建一个HashMap
HashMap<String, Integer> hm = new HashMap<String, Integer>();
hm.put("A",1);
hm.put("B",1);
hm.put("O",1);
hm.put("I",1);
....
hm.put("C",5);
hm.put("D",5);
...
您可以根据需要创建一个HashMap
HashMap<String, Integer> hm = new HashMap<String, Integer>();
hm.put("A",1);
hm.put("B",1);
hm.put("O",1);
hm.put("I",1);
....
hm.put("C",5);
hm.put("D",5);
...
不是最优的,但简短、清晰、自我解释
不是最优的,而是简短、清晰和自我解释。将所有元素a、O、I等放在一个列表中,并使用包含方法列表。containsGetLetter将所有元素a、O、I等放在一个列表中,并使用包含方法列表。containsGetLetterow,我不从这个角度思考,喜欢这样:我也更喜欢这样,简单,代码更少。谢谢。哇,我没有从这个角度思考,所以我喜欢这个:我也喜欢这个,简单,代码少,方式。谢谢