当前位置: 首页 > 面试题库 >

希望以更清洁/更有效的方式将字符串与整数关联

仲孙钊
2023-03-14
问题内容

我该如何改善?

这种关系是一对一的,并且在[-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这样的解析器生成器。



 类似资料:
  • 问题内容: 我有一个有效的JSON字符串,我想对其进行整理/格式化,以使每个属性/值对在其自己的行上,依此类推(当前它在一行上,没有空格/换行符)。 我正在使用Apache Sling 对我的JSON对象建模并将其转换为String,因此,如果可以将Sling 设置为输出一个整洁的字符串(我认为它不可能),那也可以工作。 如果我需要一个第三方库,我希望尽可能少地依赖一个库(例如Jackson仅需要

  • 问题内容: 如何验证数组仅包含整数值? 我希望能够检查一个数组,并最终得到一个布尔值,如果该数组仅包含整数并且该数组中是否还有其他字符。我知道我可以遍历数组并单独检查每个元素,然后返回或取决于非数字数据的存在: 例如: 但是,有没有更简洁的方法可以使用我从未想到的原生PHP功能呢? 注意:对于我当前的任务,我只需要验证一维数组。但是,如果有一种可以递归工作的解决方案,那么我将不胜感激。 问题答案:

  • 问题内容: 具有基于输入模型的价格范围/评级功能。在加载时,从后端进行设置时,它以整数开始,但是当您键入它时,它变为字符串。Angular中有什么方法可以将输入的值声明为整数? HTML: JS: 问题答案: 我知道我来晚了,但我想我会发布这个答案,因为其他人可能仍在寻找替代方案。 您可以使用AngularJS指令链接功能解决此问题。代码: 然后,您将在输入元素上使用此指令,以确保将您输入的任何值

  • 我已经声明了一个实现可比较接口和compareTo方法的类,使用employee ID比较两个员工。创建的类对象插入数组列表。现在,当我使用collections.sort(arrayList对象)时,它工作得很好。我对collective和comparator接口之间的比较有何不同感到困惑。我想知道如何在纯粹由数字组成的employee id字符串和其他字符串employee id之间进行比较,

  • 问题内容: 根据Netbeans的提示,名为 .append方法的使用链而不是字符串连接 在调用StringBuilder或StringBuffer的append方法的参数中寻找字符串连接。 是StringBuilder.append()确实比字符串连接更有效吗? 代码样例 与 问题答案: 您必须在可读性和功能之间取得平衡。 假设您具有以下条件: 这将创建2个字符串生成器(实际上只需要1个),外加

  • 问题内容: 哪种资本化方法更好? 矿: 要么 公用语言-StringUtils.capitalize: 我认为我更好,但我宁愿问。 问题答案: 表现是平等的。 您的代码复制了char []调用和。 关于Apache代码和。apache代码有一个额外的字符串实例,该实例具有基本char [1,length]内容。但这在创建实例String时不会被复制。