我有,
String[] directions = {"North", "South", "West", "East"};
不,我有一个String,它是这4个字符串文字中的任何一个。
如何获取方向的索引?
答案 0 :(得分:1)
可能的枚举
public enum Direction {
NORTH("North"), SOUTH("South"), EAST("East"), WEST("West");
private String text;
private Direction(String text) {
this.text = text;
}
public String getText() {
return text;
}
}
public class TestDirection {
public static void main(String[] args) {
System.out.printf("%10s: %-4s%n", "Direction", "Ordinal");
for (Direction dir : Direction.values()) {
System.out.printf("%10s: %-4d%n", dir.getText(), dir.ordinal());
}
}
}
打印出来:
Direction: Ordinal
North: 0
South: 1
East: 2
West: 3
但同样,魔鬼在细节中。由于此方法的枚举API指出:
返回此枚举常量的序数(它在枚举声明中的位置,其中初始常量的序数为零)。大多数程序员都没有使用这种方法。它设计用于复杂的基于枚举的数据结构,例如EnumSet和EnumMap。
答案 1 :(得分:1)
您也可以使用for循环实现此目的。
int i, index;
for i = 0; i < directions.lenght()-1; i++{
if(s.equals(directions[i]){
index = i;
break;
}
}
答案 2 :(得分:1)
试试这个简单的代码段:
String[] directions = {"North", "South", "West", "East"};
int directionIndex = Arrays.asList(directions).indexOf("West");
这将为您提供数组中任何字符串的索引,如果不存在,则返回-1
。
答案 3 :(得分:0)
您可以使用
java.util.Arrays.asList(directions).indexOf(s)
可以找到一个更为一般性的问题,其中有几个很好的答案here。上述解决方案是其中列出的答案之一。