今天看了个视频,试了改一下视频里的程序,但就是运行不了……
原程序:
import java.util.*;public class TestArgsWords {
private static final int ONE = 1;
public static void main(String[] args) {
         Map<String, Integer> m = new HashMap<String, Integer>();
for (int i = 0; i<args.length; i++) {
if(!m.containsKey(args[i])) {
m.put(args[i],ONE);
}
else {
int freq = m.get(args[i]);
m.put(args[i],freq + 1);
}
}
System.out.println(m.size() + " distinct words detected: ");
System.out.println(m);
}
}修改1:
import java.util.*;public class TestArgsWords {
private static final int ONE = 1;
public static void main(String[] args) {
Map<String, Integer> m = new HashMap<String, Integer>();
for (int i = 0; i<args.length; i++) {

int freq = m.get(args[i]);

m.put(args[i], (freq == 0 ? ONE : freq + 1));
}
System.out.println(m.size() + " distinct words detected: ");
System.out.println(m);
}
}修改2:
import java.util.*;public class TestArgsWords {
private static final int ONE = 1;
public static void main(String[] args) {
Map<String, Integer> m = new HashMap<String, Integer>();
for (int i = 0; i<args.length; i++) {

int freq = m.get(args[i]);

m.put(args[i], (!m.containsKey(args[i]) ? ONE : freq + 1));
}
System.out.println(m.size() + " distinct words detected: ");
System.out.println(m);
}
}

解决方案 »

  1.   

    错误提示:
    Exception in thread "main" java.lang.NullPointerException 
      

  2.   

    在第二个和第三个程序中把下面代码加进去
    for (int i = 0; i<args.length; i++) {
    if(!m.containsKey(args[i])) {
    m.put(args[i],ONE);
    }
      

  3.   

    比如 第二个应该这样刚开始你的map里面什么都没有,你就在里面取值 ,肯定抛出空指针异常啊import java.util.*;public class Test {
    private static final int ONE = 1;
    public static void main(String[] args) {
    Map<String, Integer> m = new HashMap<String, Integer>();
    for (int i = 0; i<args.length; i++) {if(!m.containsKey(args[i])) {
    m.put(args[i],ONE);
    }
    int freq = m.get(args[i]);m.put(args[i], (freq == 0 ? ONE : freq + 1));  }
    System.out.println(m.size() + " distinct words detected: ");
    System.out.println(m);
    }
    }