黑马程序员技术交流社区

标题: 泛型数组问题 [打印本页]

作者: lwy0319    时间: 2014-3-23 07:58
标题: 泛型数组问题
我想写一个泛型数组兼容一些类型的查询功能
  1. class Mun<T>{
  2.         public <T> T[]fun1(T...arg){//数组接收任何类型的参数
  3.                 return arg;
  4.         }
  5.         public <T> void fun2(T args[]){//遍历输出此数组
  6.                 for(int i=0;i<args.length;i++){
  7.                         System.out.print(args[i]+" ");
  8.                 }
  9.         }
  10.         public void fun3(T o,T args[]){
  11.                 int a=0;
  12.                         for(int i=0;i<args.length;i++){
  13.                                 if(args[i]==o){
  14.                                         a++;
  15.                                         System.out.println(o+"在数组中的位置是从左数的第"+(i+1)+"位");
  16.                                         }       
  17.                                 }
  18.                         if(a==0){
  19.                                 System.out.println("此数组中不包含元素"+o);
  20.                         }
  21.                 }
  22. }
  23. public class Text7 {
  24.         public static void main(String[] args){
  25.                 Mun<Integer> t=new Mun<Integer>();
  26.                 Integer i[]=t.fun1(1,2,3,4);
  27.                 t.fun3(3, i);
  28.                 Mun<Double> t2=new Mun<Double>();
  29.                 Double i1[]=t2.fun1(1.0,2.0,3.0,4.0);
  30.                 t2.fun3(4.0,i1);
  31.         }
  32. }
复制代码

结果发现Double类的数组总是查询出错,能帮我修改下么?
作者: hyace    时间: 2014-3-23 09:35
本帖最后由 hyace 于 2014-3-23 09:39 编辑

浮点数不能直接用等号比较的,两个数你看着一样小数点后多少位的精度你就搞不清了。你可以这样写:
  1. if(args[i].equals(o)){
  2.         a++;
  3.         System.out.println(o+"在数组中的位置是从左数的第"+(i+1)+"位");
  4. }  
复制代码


作者: lwy0319    时间: 2014-3-23 13:57
hyace 发表于 2014-3-23 09:35
浮点数不能直接用等号比较的,两个数你看着一样小数点后多少位的精度你就搞不清了。你可以这样写:
...

原来如此,谢谢你,这下差不多了




欢迎光临 黑马程序员技术交流社区 (http://bbs.itheima.com/) 黑马程序员IT技术论坛 X3.2