日期:2014-05-20  浏览次数:20614 次

新手,请帮忙指点
import   java.util.*;

public   class   Lottery   {

      /**
        *   产生1-35随机数;
        */
      public   static   void   randomNum(int   n)   {
              Set   set   =   new   HashSet();
             
              while(true)   {
                      int   r   =   new   Random().nextInt(35)+1;
                      set.add(r);       //这一行出错
                      if(set.size()> =n)   break;        
              }
              System.out.println(set);
      }

      public   static   void   main(String[]   args)   {
              randomNum(7);
              randomNum(6);
              randomNum(5);
      }
}

出错信息:The   method   add(Object)   in   the   type   Set   is   not   applicable   for   the   arguments   (int)
怎么解决?

------解决方案--------------------
参数有问题,你把int包装成对象在存到里面试试

------解决方案--------------------
你查一下Java的API就会发现,HashSet的add方法的参数要求是一个Object,而你在这里传的实参却是一个int类型的变量。
如果你用JDK1.4及以下的编译器编译的话,肯定会编译出错;但如果用JDK1.5及以上的编译器编译的话就没有问题了,因为它们实现了auto boxing,也就是说,在你传入int类型的时候,编译器会自动把它转化为Integer类型的对象。
------解决方案--------------------
如果你还是想用JDK1.4编译,那么,set.add(r);只要改成set.add(new Integer(r));就可以了。
------解决方案--------------------
set.add(r); //这一行出错
---------------
set.add( " " + r);
参数必须是一个对象。
------解决方案--------------------
set.add(r);r不能是基本类型,必须是对象。