package com.maptest;import java.util.*;public class HashTest2 { /**
 * @param args
 */
public static void main(String[] args) {
// TODO Auto-generated method stub
HashMap hashMap = new HashMap();
for (int i = 0; i < args.length; i++) {
if (args[i] == null) {
hashMap.put(args[i], new Integer(1));
}else {
Integer integer = (Integer)hashMap.get(args[i]);
integer = new Integer(integer.intValue()+1);  // 这里是第 18 行
hashMap.put(args[i], integer);
}
}

Set set = hashMap.keySet();


for (Iterator iterator = set.iterator(); iterator.hasNext();) {
String key = (String)iterator.next();
Integer value = (Integer)hashMap.get(key);
System.out.println(key + " = " + value);
}
}
}我在eclipse 中传入了参数,可是为什么说第十八行,出现空指针异常···
即:
Exception in thread "main" java.lang.NullPointerException
at com.maptest.HashTest2.main(HashTest2.java:18)

解决方案 »

  1.   

    hashMap是空的,第17行取出的integer是null,所以报错。
    看楼主的代码,似乎这句:
    if (args[i] == null) 
    应该改一下:if ((Integer)hashMap.get(args[i]) == null) 
    楼主试试。
      

  2.   

    if (args[i] == null) {
    hashMap.put(args[i], new Integer(1));
    }else {
    Integer integer = (Integer)hashMap.get(args[i]);
    integer = new Integer(integer.intValue()+1); // 这里是第 18 行
    hashMap.put(args[i], integer);
    }
    }很明显的错误啊。你的args[i]为空的时候你放入值1 不为空进入下面循环hashMap里面一个元素没有所以hashMap.get(args[i])一定是Null啊  所以你的integer是Null 所以null.intValue()才会爆空指针这很明显你的逻辑错误
      

  3.   

    出错原因:因为你的hashMap在你取值之前,
    没有赋值,所有当然取不到。建议你用Eclipse Debug调试下。就知道程序的执行顺序了。
      

  4.   

    谢谢了,好傻的我···应该是判断 HashMap 中有没有···