【问题标题】:Code Simplification Help : Is there a way to not use a million if/else-if statements in the given situation?代码简化帮助:有没有办法在给定的情况下不使用一百万个 if/else-if 语句?
【发布时间】:2014-08-13 04:06:07
【问题描述】:

我目前正在编写一个将英语转换为 1337 的小型翻译器,我想知道是否有更有效的方法可以做到这一点。我目前有下面编写的代码,用于在输入函数时返回相应的字符串。我想优化这个(编码和内存)。提前感谢您的帮助! :-)

if(b.equalsIgnoreCase(“a”){ return “@";}
else if(b.equalsIgnoreCase(“b”){ return “|3”;}
else if(b.equalsIgnoreCase(“c”){ return “<”;}
else if(b.equalsIgnoreCase(“d”){ return “|)”;}
else if(b.equalsIgnoreCase(“e”){ return “3”;}
else if(b.equalsIgnoreCase(“f”){ return “|*”;}
else if(b.equalsIgnoreCase(“g”){ return “6”;}
else if(b.equalsIgnoreCase(“h”){ return “/-/”;}
else if(b.equalsIgnoreCase(“i”){ return “!”;}
else if(b.equalsIgnoreCase(“j”){ return “_|”;}
else if(b.equalsIgnoreCase(“k”){ return “|<”;}
else if(b.equalsIgnoreCase(“l”){ return “1”;}
...
..
.

【问题讨论】:

  • 将您的 from/to 字符串放入 HashMap&lt;String, String&gt;
  • 为什么你的问题在代码中有智能引号?
  • 因为是从pdf复制过来的
  • 是的!程序在我的手机上,但我在电脑上写了这个问题。吉格是正确的。感谢所有的帮助,顺便说一句:D

标签: java if-statement optimization simplify


【解决方案1】:

使用Map&lt;String, String&gt; 并进行查找,

要控制应用程序外部的映射,您可以创建一个属性文件并在加载或某些触发器时读取它以加载/刷新查找数据结构

【讨论】:

  • 也许是一个配置文件...+1 虽然
【解决方案2】:

对于这个特定的示例,您可以利用字符可以是数组索引这一事实:

String[] leet = new String[] { "@", "|3", "<", ... };

查找是:

public String toLeet(char ch) {
    return ('A' <= ch && ch <= 'Z' ? leet[ch - 'A'] :
        ('a' <= ch && ch <= 'z' ? leet[ch - 'a'] : String.valueOf(ch)));
}

【讨论】:

    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 2020-11-27
    • 1970-01-01
    • 1970-01-01
    • 2018-10-25
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多