[英]how do i check for null pointer exception
这是代码
private static HashMap naturalNumbers = new HashMap();
static
{
naturalNumbers.put("zero", new Integer( 0 ) );
naturalNumbers.put("one", new Integer( 1 ) );
naturalNumbers.put("two", new Integer( 2 ) );
naturalNumbers.put("three", new Integer( 3 ) );
}
private static int findANumber( String partOfaNumber ) throws Exception
{
int multiplicand = 0;
multiplicand += (Integer)naturalNumbers.get( partOfaNumber );
如果“ get”返回null,该如何检查?
我努力了:
if ( (Integer)naturalNumbers == null )
{
throw new Exception( "Number not found" );
}
return multiplicand;
}
但是IDE甚至不接受它:无法从HashMap转换为Integer。
这是一个略有不同的版本:
private static final HashMap<String, Integer> NUMS = new HashMap<String, Integer>();
static
{
NUMS.put("zero", 0);
NUMS.put("one", 1);
NUMS.put("two", 2);
NUMS.put("three", 3);
}
private static int findANumber(final String partOfaNumber) throws IllegalArgumentException
{
int multiplicand = 0;
final Integer theNum = NUM.get(partOfaNumber);
if (theNum != null) {
multiplicand += theNum;
} else {
throw new IllegalArgumentException("Number not found (" + partOfNumber + ")");
}
return multiplicand;
}
这很简单。
Integer number = naturalNumbers.get( partOfaNumber )
if(number ==null) {
throw new Exception("Number not found");
} else {
multiplicand += number;
}
return multiplicand;
您可以按以下方式使用速记-
被乘数+ = naturalNumbers.get(partOfaNumber)== null吗? 0:(整数)naturalNumbers.get(partOfaNumber);
private static int findANumber( String partOfaNumber ) throws Exception
{
int multiplicand = 0;
if (naturalNumbers.containsKey( partOfaNumber ); {
multiplicand += (Integer)naturalNumbers.get( partOfaNumber );
} else {
throw new Exception("Number not found");
}
return multiplicand;
}
只需检查密钥是否存在于Hashmap中。 您不必担心Null-Pointer异常。
if(naturalNumbers.containsKey( partOfaNumber )){
//Do your stuff
}else{
//Do some stuff what you will when exception throw.
}
您也可以使用
naturalNumbers.containsValue( value)
由于Java的自动装箱机制,您将始终必须为原始类型的集合添加对空值的检查。
可以生成一个简单的空指针,如下所示
Integer i = null;
i=i+10;
因此,请始终添加默认检查是否为null的情况,您可以按照以下方式添加它
Integer multiplicand = 0;
Integer value = get(key);
if(value!= null)
{
//add value to multiplicand
}
首先,最好使用特定的HashMap
private static HashMap<String, Integer> naturalNumbers = new HashMap<String, Integer>();
这将摆脱讨厌的演员。
对于您的问题,您尝试将哈希映射转换为整数,这不是您想要的。 您要检查是否存在特定值。 更好的方法是提取值并检查null:
int multiplicand = 0;
Integer part = naturalNumbers.get(partOfNumber)
if(part == null) {
// Handle the null case
}
multiplicand += part;
现在的问题是,如果该值不存在,您将如何处理。 如果将不存在的值定义为零,则可以执行以下操作
multiplicand += (naturalNumbers.contains(partOfNumber)?naturalNumbers.get(partOfNumber):0;
这使其更加简洁。 但是,这取决于您要在HashMap中不包含该值的情况下要执行的操作。
声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.