A股上市公司传智教育(股票代码 003032)旗下技术交流社区北京昌平校区

 找回密码
 加入黑马

QQ登录

只需一步,快速开始

© lwy0319 高级黑马   /  2014-3-23 07:58  /  1094 人查看  /  2 人回复  /   0 人收藏 转载请遵从CC协议 禁止商业使用本文

我想写一个泛型数组兼容一些类型的查询功能
  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类的数组总是查询出错,能帮我修改下么?

评分

参与人数 1技术分 +1 收起 理由
朱神必 + 1

查看全部评分

2 个回复

倒序浏览
本帖最后由 hyace 于 2014-3-23 09:39 编辑

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

评分

参与人数 1技术分 +1 收起 理由
朱神必 + 1

查看全部评分

回复 使用道具 举报
hyace 发表于 2014-3-23 09:35
浮点数不能直接用等号比较的,两个数你看着一样小数点后多少位的精度你就搞不清了。你可以这样写:
...

原来如此,谢谢你,这下差不多了
回复 使用道具 举报
您需要登录后才可以回帖 登录 | 加入黑马