从作为String java传递的值检查flag是True还是False

时间:2017-05-29 10:34:01

标签: java

假设我有一系列字符串项{"item1", "item2", "item3"} 和一些名为相同的布尔值:

Boolean item1 = true
Boolean item2 = true
Boolean item3 = false

我需要遍历数组并停在指定的位置,并能够返回与我所在字符串对应的项目的布尔值。

你会怎么做呢?

4 个答案:

答案 0 :(得分:2)

item1等本地变量或字段?在第一种情况下,没有办法:Java不做动态变量名。使用例如而是Map<String, Boolean>。在第二种情况下,您可以使用Class.getDeclaredField方法,但很有可能有更好的方法来达到您的目的。

答案 1 :(得分:1)

简单的方法:

public class BoolArray {

    public static void main(String[] args) {
        boolean result = checkItem("item1");
        System.out.println(result);
    }
    //or without using return type print false in sysout
    public static boolean checkItem(String name){

        String items[] = {"item1", "item2", "item3"};
        boolean hasItem[] = {true, true, false};

        if(name.equals("item1")){
            return hasItem[0];
        }else if(name.equals("item2")){
            return hasItem[1];
        }else if(name.equals("item3")){
            return hasItem[2];
        }else{
            return false;
        }
    }

}

或者您可以使用高级方法(如收集API),然后您可以减少代码行。您可以使用HashTable HashMap,从中可以使用键值对。或者您可以使用List with your own custom Pair

使用HashTable

您可以将其作为方法实现,并获得上述特定值。

Hashtable table = new Hashtable();
table.put("item1", true);
table.put("item2", true);
table.put("item3", false);

Enumeration e = table.keys();
while (e.hasMoreElements()) {
  String key = (String) e.nextElement();
  System.out.println(key + " : " + table.get(key));
}

答案 2 :(得分:0)

您可以创建一个返回boolean的函数:

boolean[] b_arr = {true,true,false};
String[]  s_arr = {"I1","I2","I3"};

public boolean check(){
for(int i=0;i<s_arr.length;i++){
    if(logic_to_check_your_condition){
    return b_arr[i];
    }
 }
return false;
}

答案 3 :(得分:0)

虽然技术上可行,但采取不同的方法可能会更好。 例如:

DependsOn

这里我们创建一个从String到Boolean的映射。然后,只要您需要属于给定String的布尔值,就可以从地图中获取它。