写了一段程序,居然编译的时候报错,
说下面的语句缺少;
for(String word:args){
哈哈,是不是jdk 1.5.0_13还不支持泛型,增强for循环啊?代码如下import java.util.*;public class Freq2{
    public static void main(String args[]){
        Map<String,Integer> m = new TreeMap<String,Integer>();
        
        for(String word:args){
            m.put(word,m.get(word)+1);
            
        System.out.println(m);
        }
    }
}

解决方案 »

  1.   

    jdk 1.5以上就支持泛型和增强for循环了.是不是你写错了.
      

  2.   


    你的<>有问题~是不是全角?
    TreeMap<String, Integer> m = new TreeMap<String, Integer>();        for (String word : args) {
                m.put(
                    word,
                    m.get(word) + 1);            System.out.println(m);
            }
      

  3.   


    //发错。。,你的源程序改成这样
     Map<String, Integer> m = new TreeMap<String, Integer>();        for (String word : args) {
                m.put(
                    word,
                    m.get(word) + 1);            System.out.println(m);
            }
      

  4.   

    没有写错啊。我估计是不是我机器jdk1.4和jdk 5.0并存的原因。
      

  5.   

    3楼的source我试过了,还是不行,看样子真的是jdk1.4不能和jdk5.0共存阿。
      

  6.   

    m.get(word)
    这个时候m为空,所以出错
      

  7.   

    我用的是utraledit,然后写完之后,到dos窗口里面去javac编译的。
    哈哈,比较原始的方法
      

  8.   

    D:\study\java>java -version
    java version "1.5.0_13"
    Java(TM) 2 Runtime Environment, Standard Edition (build 1.5.0_13-b05)
    Java HotSpot(TM) Client VM (build 1.5.0_13-b05, mixed mode, sharing)看样子sun做得不好,不能两个jdk共存
      

  9.   

    楼主怎么还没搞清楚啊
    m.get(word) 返回null
    怎么能null+1呢
      

  10.   


    但是编译都没有过啊,我还没有运行过,你说的问题肯定是运行时错误阿我是把下面的代码改造成泛型的import java.util.*;public class Freq {
        private static final Integer ONE = new Integer(1);
        
        public static void main(String args[]){
            Map m = new TreeMap();
            
            for (int i=0;i<args.length;i++){
                Integer freq = (Integer)m.get(args[i]);
                m.put(args[i],(freq==null?ONE:new Integer(freq.intValue()+1)));
            }
            
            System.out.println(m);
        }
    }
      

  11.   

    因为我拷你程序来我这里,之后现实<>这里编译出错~我用英文输入法改了<>就可以了~
    还有,我看你的你看看你的path和JAVA_HOME~PATH上的是不是1.5的?
      

  12.   

    1 命令行编译,先确认你的java的版本
    2 Eclipse 编译,确认你的 JDK和JRE的版本
      

  13.   

    你在你的DOS窗口下
    执行:java -version
    虽然你装了1.5的,你用的肯定是JDK1.4的.
    然后你再在环境变量里面把JDK1.5的bin目录放在path路径最前面就OK了   
      

  14.   

    如果你用的是eclipse可能要看下你当前兼容的jdk版本,因为虽然你的jdk安装的是1.5但是eclipse里面有个设置要看下是不是兼容1.5
    哎,没法上传附件,不能给你截图勒。呵呵
      

  15.   

    你输入
    javac -version看看..
      

  16.   

    不好意思,最近做论坛在,所以用CSDN的测试一下功能,呵呵
      

  17.   

    确保你jre运行时的环境为1.5以上....
      

  18.   

    可以多套jdk并存的。但是环境变量中最好不要出现多于一个的jdk目录。
    由于/system32里也有一个java.exe,建议将java相关的路径放在PATH最前面。
      

  19.   

    查错了,应该是看编译器的版本,而不是看JRE的版本,楼主这是编译不通过
    javac -version看看
      

  20.   

    看看你的path和JAVA_HOME~PATH上的是不是1.5的?
      

  21.   

    我在我的机器上试过你的源码,我的jdk是1.5的,没有问题的,你看看你的java环境变量的配置是不是指向1.5版本以上
      

  22.   

    源码是对的,Eclipse是支持多个JDK版本的,不同版本的JDK也可以安装在同一台机器上。你可以在dos下,
    1.  java -version 看看jdk版本是不是1.5
    如果是的话,可以用javac来编译一下你的程序,是可以编译成功的
    如果不是,你可以改一下环境配置,指向jdk1.52. Eclipse的配置肯定有问题。你看看Eclipse用的jdk版本是不是1.5。 可以在eclipse的设置中查到