我该如何改善?

这种关系是一对一的,并且在[-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/

10-12 20:32