我试图检查一个阵列的每个元素出现在地图上。我通过使用containsKey函数来完成此操作。但是,当它返回null(我希望它,如果toppping选择不在地图中),我无法处理该错误。有谁知道我该怎么做这个请吗?比萨饼问题映射值零,处理错误
for(int i = 0; i < toppingsChosen.length; i++)
{
t.toppings.containsKey(toppingsChosen[i])
}
我试图检查一个阵列的每个元素出现在地图上。我通过使用containsKey函数来完成此操作。但是,当它返回null(我希望它,如果toppping选择不在地图中),我无法处理该错误。有谁知道我该怎么做这个请吗?比萨饼问题映射值零,处理错误
for(int i = 0; i < toppingsChosen.length; i++)
{
t.toppings.containsKey(toppingsChosen[i])
}
你可以这样做,以检查它是否包含密钥,否则它不是在你的地图:
if (t.toppings.containsKey(toppingsChosen[i])){
//do what you want
}
else{
//not in your map
}
它停止程序与比萨这个错误 – user3092980
异常线程“main”显示java.lang.NullPointerException \t。
什么是35行,然后呢? – hichris123
你的语句将返回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)
}
}
假设你只是想略过toppingsChosen[i]
如果它不存在于地图(浇头)
你可以沿着这些线路
你可以用做一些扩展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.)
}
}
}
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
}
}
}
“存在”,而不是“退出” –
你想要做什么,如果选择的是摘心不是在地图吗? – KodeSeeker
你用containsKey的返回值做什么?例如,如果顶部在那里,你想要做什么?如果不是呢? – Hut8
如果不是,我需要让用户选择不同的顶部,因为它是不允许的。如果摘心是存在的,我会再拿到在地图中键的值,并将其添加到比萨饼 – user3092980