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)
* @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)
看楼主的代码,似乎这句:
if (args[i] == null)
应该改一下:if ((Integer)hashMap.get(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()才会爆空指针这很明显你的逻辑错误
没有赋值,所有当然取不到。建议你用Eclipse Debug调试下。就知道程序的执行顺序了。