Java 菜鸟问题,找不到错误···
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)
------最佳解决方案--------------------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()才会爆
空指针这很明显你的逻辑错误
------其他解决方案--------------------出错原因:因为你的hashMap在你取值之前,
没有赋值,所有当然取不到。
建议你用Eclipse Debug调试下。就知道程序的执行顺序了。------其他解决方案--------------------
太对了
------其他解决方案--------------------hashMap是空的,第17行取出的integer是null,所以报错。
看楼主的代码,似乎这句:
if (args[i] == null)
应该改一下:
if ((Integer)hashMap.get(args[i]) == null)
楼主试试。
------其他解决方案--------------------楼上正解
------其他解决方案--------------------谢谢了,好傻的我···应该是判断 HashMap 中有没有···