2013-12-11 20 views
2

我试图检查一个阵列的每个元素出现在地图上。我通过使用containsKey函数来完成此操作。但是,当它返回null(我希望它,如果toppping选择不在地图中),我无法处理该错误。有谁知道我该怎么做这个请吗?比萨饼问题映射值零,处理错误

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

你想要做什么,如果选择的是摘心不是在地图吗? – KodeSeeker

+1

你用containsKey的返回值做什么?例如,如果顶部在那里,你想要做什么?如果不是呢? – Hut8

+0

如果不是,我需要让用户选择不同的顶部,因为它是不允许的。如果摘心是存在的,我会再拿到在地图中键的值,并将其添加到比萨饼 – user3092980

回答

2

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

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

else{ 
    //not in your map 
} 
+0

它停止程序与比萨这个错误 – user3092980

+0

异常线程“main”显示java.lang.NullPointerException \t。 (Pizza.java:16) \t在PizzaBuild.main(PizzaBuild.java:35) – user3092980

+0

什么是35行,然后呢? – hichris123

1

你的语句将返回true或false,否则为false进入下一个循环迭代如果属实的话,可以做任何你需要的处理。

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) 
    } 
} 
0

假设你只是想略过toppingsChosen[i]如果它不存在于地图(浇头)

你可以沿着这些线路

​​
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.) 
     }   
    } 
} 
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 
     } 
     } 
    } 
+0

“存在”,而不是“退出” –