【问题标题】:How to compare a element in String array in Android?如何比较Android中String数组中的元素?
【发布时间】:2016-10-31 09:55:59
【问题描述】:

我有一个字符串数组如下:

String [] str_cmd_arr={"cmd1", "cmd2"};

鉴于此,“cmd1”将输出“执行命令 1”,而“cmd2”将输出“执行命令 2”。

从我的str_cmd_arr,如何在 Java/Android 中单独打印输出?目前,我正在使用此代码

for (int i=0;i<str_cmd_arr.length;i++){
    if(i<1){
        Log.d("TAG","perform command 1");
    }
    else{
        Log.d("TAG","perform command 2");
    }
}

【问题讨论】:

    标签: java android arrays string


    【解决方案1】:

    这里真正的解决方案:使用地图,比如

    Map<String, String> commandsAndOutput = new HashMap<>();
    commandsAndOutput.put("cmd1", "cmd1 output");
    ...
    

    以后做

    String output = commandsAndOutput.get("cmd1");
    

    例如。

    另一种可能更理智的方式:考虑使用枚举,例如:

    public enum Command {
      CMD1, CMD2;
    }
    

    如果您在不同命令之间进行选择时正在寻找更多“编译时间”支持。你现在可以写下:

    Command cmd = ...
    switch(cmd) {
      case(CMD1) : ...
    

    但另一个警告:人们应该小心这样的枚举/切换代码。在大多数情况下,与抽象基类 Command 和特定子类一起使用的“真正基于 OO 的”设计是更好的选择。

    真正的教训是:您想学习一些基础知识,例如here 中的教程。你看,为 Android 编程是没有意义的……如果你不了解诸如地图之类的基本知识。从这个意义上说,很难给你“好”的建议,因为“好”的东西是抽象基类解决方案——这似乎完全超出了你目前的技能。

    【讨论】:

    • 谢谢。但我想打印输出作为我的问题。
    【解决方案2】:

    将您的 if 语句替换为

    if(str_cmd_arr[i]).equals("cmd1"){
    

    【讨论】:

      【解决方案3】:

      您可以使用循环和switch 语句

      例如

      for (int i=0;i<str_cmd_arr.length;i++){
          switch(str_cmd_arr[i]) {
              case "cmd1":
                  Log.d("TAG","perform command 1");
              break;
      
              case "cmd2":    
                  Log.d("TAG","perform command 2");
              break;
          }
      }
      

      【讨论】:

        猜你喜欢
        • 1970-01-01
        • 1970-01-01
        • 2020-07-16
        • 2022-01-14
        • 1970-01-01
        • 1970-01-01
        • 2011-12-16
        • 1970-01-01
        • 1970-01-01
        相关资源
        最近更新 更多