披萨问题映射值null,处理错误

时间:2013-12-11 21:32:00

标签: java

我正在尝试检查地图中是否存在数组的每个元素。我通过使用containsKey函数完成了这个。但是当它返回null(如果toppingChosen不在地图中时我想要它)我无法处理错误。有谁知道我怎么能这样做?

for(int i = 0; i < toppingsChosen.length; i++)
{
    t.toppings.containsKey(toppingsChosen[i])                   
}

5 个答案:

答案 0 :(得分:2)

你可以这样做来检查它是否包含密钥,否则它不在你的地图中:

if (t.toppings.containsKey(toppingsChosen[i])){
    //do what you want
}

else{
    //not in your map
}

答案 1 :(得分:1)

您的语句将返回true或false,如果为false则返回下一个循环迭代,如果为true,则执行您需要的任何处理。

for(int i = 0; i < toppingsChosen.length; i++) {
    if (t.toppings.containsKey(toppingsChosen[i])) {
        //do whatever
    } else {
        // not in map, print something, throw an error, 
        // or do nothing and continue (not recommended)
    }
}

答案 2 :(得分:0)

假设您只想跳过toppingsChosen[i],如果它不在地图中(浇头)

你可以沿着这些方向做点什么

for(int i = 0; i < toppingsChosen.length; i++)
{
   if (!t.toppings.containsKey(toppingsChosen[i]))    
           continue;// it will just skip the element and loop over the rest of the toppings
    else
//do something useful
}

答案 3 :(得分:0)

您可以使用扩展的for循环。

if (toppingsChosen != null) {
   for (Topping topping : toppingsChosen) {
       if (!t.toppings.containsKey(topping)) {
           // handle missing topping
       } else if (t.toppings.get(topping) == null) {
           // handle error (could be collapsed with upper if branch.)
       }           
   }
}

答案 4 :(得分:0)

  for(int i = 0; i < toppingsChosen.length; i++)
   {

      if( t.toppings!=null){
         if(t.toppings.containsKey(toppingsChosen[i])){
              // value exist in your map
         }else{
             // value not exist in your map
         }
      }
  }