如何比较Android中String数组中的元素?

时间:2016-10-31 09:56:00

标签: java android arrays string

我有一个String数组,如下所示:

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");
    }
}

3 个答案:

答案 0 :(得分:5)

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

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的编程没有意义......如果你不了解像Maps这样的基本内容。从这个意义上说,很难给你“好”的建议,因为“好”的东西是抽象的基类解决方案 - 这似乎完全超出你现有的技能。

答案 1 :(得分:2)

将您的if语句替换为

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

答案 2 :(得分:2)

您可以使用循环和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;
    }
}