我该如何改善?
这种关系是一对一的,并且在[-1,5]上是连续的,所以我一直在考虑使用枚举,但是我不确定如何将字符串值与枚举值进行比较。
如果有更好的方法可以这样做,请提出建议。
谢谢!
private int evaluateWord(String sval) {
if (sval.equals("program"))
return 1;
else if (sval.equals("begin"))
return 2;
else if (sval.equals("end"))
return 3;
else if (sval.equals("int"))
return 4;
else if (sval.equals("if"))
return 5;
else
System.exit(0);
最佳答案
您是否考虑过一次将映射填充到HashMap中,然后仅查询映射?
例如,如下所示:
private static final Map<String,Integer> m_map = new HashMap<String,Integer>();
static {
m_map.put( "program", 1 );
m_map.put( "begin", 2 );
m_map.put( "end", 3 );
m_map.put( "int", 4 );
m_map.put( "if", 5 );
}
private int evaluateWord(String sval) {
Integer value = m_map.get( sval );
if ( null != value ) {
return value;
}
else {
System.exit(0);
}
}
顺便说一句,看起来好像您正在编写解析器。手工编写一个解析器可能是合理的。除非有充分的理由手工编写,否则要考虑的另一种选择是解析器生成器,例如ANTLR。
关于java - 希望以更清洁/更有效的方式将字符串与整数关联,我们在Stack Overflow上找到一个类似的问题:https://stackoverflow.com/questions/5698150/