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

 找回密码
 加入黑马

QQ登录

只需一步,快速开始

© 聖手`书生 中级黑马   /  2013-5-16 21:24  /  2983 人查看  /  29 人回复  /   0 人收藏 转载请遵从CC协议 禁止商业使用本文

本帖最后由 聖手`书生 于 2013-5-23 09:19 编辑

各位大神,兄弟我写了个求整型数组最大值的方法,只要将整型数组传进去就OK了

但是现在有个需求,能够实现传入数字类型的数组都能完成该方法(也就是能同时传int,double,long,float 都可以),现在想破脑筋都没弄出来,帮忙求解。

        public static int getMax_2(int[] arr){
               
                int max = 0;
                for(int x=1; x<arr.length; x++)
                {
                        if(arr[x]>arr[max])
                                max = x;
                }
                return arr[max];

评分

参与人数 1技术分 +1 收起 理由
袁梦希 + 1

查看全部评分

29 个回复

倒序浏览
你说的是什么意思   我没理解   能再复述一遍吗
回复 使用道具 举报
袁梦希 发表于 2013-5-16 21:31
你说的是什么意思   我没理解   能再复述一遍吗

我也没理解改方法是啥,跟着大佬走:lol

评分

参与人数 1黑马币 +3 收起 理由
袁梦希 + 3

查看全部评分

回复 使用道具 举报
神之梦 发表于 2013-5-16 21:38
我也没理解改方法是啥,跟着大佬走

不用叫大佬    叫兄弟就行   :handshake
回复 使用道具 举报
数字类型? 不是char或者 Sring?
回复 使用道具 举报
整型类型数组的数据 不是 数字嘛?int[] arr={2,5,8,9,11,23};
2 5 8 9 11 23
回复 使用道具 举报
哎,这么说吧,你传进去一个Object[] obj 的数组
String s = obj.getClass().getComponentType().toString();//就是说,获取obj的字节码,然后获取数据类型,然后获取字符串
然后就用if else 语句判断是不是数字类型的数组,或者是String,或者其他对像,看你扩展了
回复 使用道具 举报
曹睿翔 发表于 2013-5-16 22:25
哎,这么说吧,你传进去一个Object[] obj 的数组
String s = obj.getClass().getComponentType().toString( ...

你好,这个Object好像不能代替基本数据类型把。
回复 使用道具 举报
袁梦希 发表于 2013-5-16 21:31
你说的是什么意思   我没理解   能再复述一遍吗

修改了,请再看看
回复 使用道具 举报
神之梦 发表于 2013-5-16 21:38
我也没理解改方法是啥,跟着大佬走

修改了,请帮忙看看
回复 使用道具 举报
袁梦希 发表于 2013-5-16 21:39
不用叫大佬    叫兄弟就行

修改了,帮忙看看
回复 使用道具 举报
逝者轨迹 发表于 2013-5-16 22:00
数字类型? 不是char或者 Sring?

我说的数字类型并不是说某种数据类型。而是说 int, float,double,long 等类型,都是数字的   题目修改了,帮忙看看
回复 使用道具 举报
王婷婷 发表于 2013-5-16 22:19
整型类型数组的数据 不是 数字嘛?int[] arr={2,5,8,9,11,23};
2 5 8 9 11 23

美女,你说的这种整型的我懂,需求修改了,你帮忙看看
回复 使用道具 举报
你的问题我也碰到了,我又问了下黄玉坤,他给出了一个很好的解释
通过查看API文档发现
比如Arrays包中有toString方法。传入的参数是八种基本数据类型和其他类。函数之间以重载形式出现。基本数据类型毕竟不是对像,操作起来不方便,不然要那么多基本数据类型封装类干嘛
还有一个思路就是传入Object obj 这个参数接收数组引用。然后获取字节码文件,判断是不是数组,然后获取 数组类型和长度,本想还原这个数组可是还是接收不了,看来以后才能解决了
回复 使用道具 举报

  1. public class NumberTest {

  2.         /**
  3.          * @param args
  4.          */
  5.         public static void main(String[] args) {
  6.                 // TODO Auto-generated method stub
  7.                 Number[] num = {90.1d, 20.6f, 12, 200L};
  8.                 double max = 0;
  9.                
  10.                 for(int i=0 ; i<num.length; i++){
  11.                         if(num[i] instanceof Integer){
  12.                                 if(max < num[i].intValue()){
  13.                                         max = num[i].intValue();
  14.                                 }
  15.                         }
  16.                         if(num[i] instanceof Double){
  17.                                 if(max < num[i].doubleValue()){
  18.                                         max = num[i].doubleValue();
  19.                                 }
  20.                         }
  21.                         if(num[i] instanceof Float){
  22.                                         max = num[i].floatValue();
  23.                         }
  24.                         if(num[i] instanceof Long){
  25.                                 if(max < num[i].longValue()){
  26.                                         max = num[i].longValue();
  27.                                 }
  28.                         }
  29.                 }
  30.                 System.out.println(max);
  31.                 /*for(int i = 0; i<num.length; i++){/或者直接把所有数字当做精度最高double类型
  32.                         if(max < num[i].doubleValue()){
  33.                                 max = num[i].doubleValue();
  34.                         }
  35.                 }
  36.                 System.out.println(max);*/
  37.         }

  38. }
复制代码
楼主是不是这个意思啊,数字型数组里的有int,double,long,float类型

评分

参与人数 1技术分 +1 收起 理由
袁梦希 + 1

查看全部评分

回复 使用道具 举报
大家很给力 加油吧
回复 使用道具 举报
"能够实现传入数字类型的数组都能完成该方法(也就是能同时传int,double,long,float 都可以)"

如果说是单个变量类型,往一个方法中传参数,可以将方法的参数定义为精度最高的double类型  返回也是double,应用的时候再强转一下!

要是数组的话,试过Object[],double[],Number[] 都没成功。

好像关键是参数传入的问题。
回复 使用道具 举报
如果是这样的,应该穿一个长度最长的类型,double类型,然后在数组中进行强制转换
回复 使用道具 举报
何俊森 发表于 2013-5-21 17:11
楼主是不是这个意思啊,数字型数组里的有int,double,long,float类型

这样写?呵呵,牛逼,问你一个问题,怎么把代码截上去了呀?我只能上传文本
回复 使用道具 举报
本帖最后由 Changer_s 于 2013-5-22 12:57 编辑

我个人感觉的话,你找一找基本类型_数组的父类,也就是Object!它如何遍历呢?这个问题看这个静态方法
private static void printObject(Object obj) {
                Class cls = obj.getClass();
                //判断obj是否是数组
                if(cls.isArray()){
                        int len = Array.getLength(obj);
                        for (int i = 0; i < len; i++) {
                                System.out.println(Array.get(obj, i));
                        }
                }else{
                        System.out.println(obj);
                }

我只能做到遍历,现在没时间研究这个了,要上课了,回来再探讨一下呗!!!嘿嘿
回复 使用道具 举报
12下一页
您需要登录后才可以回帖 登录 | 加入黑马