Java 初学者有关问题,找不到异常·
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,所以报错。
看楼主的代码,似乎这句:
应该改一下:
楼主试试。
------其他解决方案--------------------
楼上正解
------其他解决方案--------------------
谢谢了,好傻的我···应该是判断 HashMap 中有没有···
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 中有没有···