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

© 聖手`书生 中级黑马   /  2013-5-16 21:24  /  3521 人查看  /  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-23 20:52
这个问题用泛型也不好使

必须不好使,编译不用说了,直接红色下划线提示错误!
回复 使用道具 举报
回复 使用道具 举报
821728010 发表于 2013-5-23 20:27
class Shuzu{
       
public T getMax_2(T[] arr){

这个问题用泛型也不好使
回复 使用道具 举报
class Shuzu<T>{
       
public T getMax_2(T[] arr){
            int max = 0;
            for(int x=1; x<arr.length; x++)
            {
                    if(arr[x]>arr[max])
                            max = x;
            }
            return arr[max];
}
}
我尝试用泛型解决,eclipse提示“if语句”后面括号中的判断错误,意思应该是说“没有定义类型的数组成员不能进行大小的比较”
回复 使用道具 举报
Changer_s 发表于 2013-5-22 12:46
这样写?呵呵,牛逼,问你一个问题,怎么把代码截上去了呀?我只能上传文本 ...

编辑里的高级模式里有贴代码的功能
回复 使用道具 举报
好就行,斑竹给分不?
回复 使用道具 举报
赵利斌 发表于 2013-5-22 23:17
不知道这样算不算对呢?我这里只做了int和float的,其他的照葫芦画瓢
代码:
import java.util.Arrays;

这个想法挺好,我个人感觉可行,等一下我就下去试试
回复 使用道具 举报
我的思路是先把一个数组排序,然后取最大值,我这里是按升序排好,取最后一个值,这样可以取到最大值的,不管你上面类型吧,数值类型的都没问题呀。
回复 使用道具 举报
问题解决就再次编辑更改问题类型,没有解决继续追问
回复 使用道具 举报
不知道这样算不算对呢?我这里只做了int和float的,其他的照葫芦画瓢
代码:
import java.util.Arrays;

public class ters {
        public static void main(String[]  args)
        {
                int[] array={1,4,60,23,0};
                float[] array1={1.2f,3.4f,12.6f,0.1f};
                System.out.println("排序前");
                printArray(array);
       
                printArray(array1);

                System.out.println("自带排序");
                Arrays.sort(array);

                Arrays.sort(array1);
                printArray(array);
       
                printArray(array1);
                System.out.println("最大值="+array[array.length-1]);
                System.out.println("最大值="+array1[array1.length-1]);
        }
        //打印数组
        public static void printArray(int[] array)
        {
                for(int x=0;x<array.length;x++)
                {
                        System.out.print(array[x]+" ");
                }
                System.out.println();
        }
        public static void printArray(float[] array)
        {
                for(int x=0;x<array.length;x++)
                {
                        System.out.print(array[x]+" ");
                }
                System.out.println();
        }
}

class  Array
{
        int[] num;
        float[] num1;
        Array(int[] num)
        {
                this.num=num;
        }
        Array(float[] num)
        {
                this.num1=num;
        }
}
回复 使用道具 举报
本帖最后由 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);
                }

我只能做到遍历,现在没时间研究这个了,要上课了,回来再探讨一下呗!!!嘿嘿
回复 使用道具 举报
何俊森 发表于 2013-5-21 17:11
楼主是不是这个意思啊,数字型数组里的有int,double,long,float类型

这样写?呵呵,牛逼,问你一个问题,怎么把代码截上去了呀?我只能上传文本
回复 使用道具 举报
如果是这样的,应该穿一个长度最长的类型,double类型,然后在数组中进行强制转换
回复 使用道具 举报
"能够实现传入数字类型的数组都能完成该方法(也就是能同时传int,double,long,float 都可以)"

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

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

好像关键是参数传入的问题。
回复 使用道具 举报
大家很给力 加油吧
回复 使用道具 举报

  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

查看全部评分

回复 使用道具 举报
你的问题我也碰到了,我又问了下黄玉坤,他给出了一个很好的解释
通过查看API文档发现
比如Arrays包中有toString方法。传入的参数是八种基本数据类型和其他类。函数之间以重载形式出现。基本数据类型毕竟不是对像,操作起来不方便,不然要那么多基本数据类型封装类干嘛
还有一个思路就是传入Object obj 这个参数接收数组引用。然后获取字节码文件,判断是不是数组,然后获取 数组类型和长度,本想还原这个数组可是还是接收不了,看来以后才能解决了
回复 使用道具 举报
王婷婷 发表于 2013-5-16 22:19
整型类型数组的数据 不是 数字嘛?int[] arr={2,5,8,9,11,23};
2 5 8 9 11 23

美女,你说的这种整型的我懂,需求修改了,你帮忙看看
回复 使用道具 举报
逝者轨迹 发表于 2013-5-16 22:00
数字类型? 不是char或者 Sring?

我说的数字类型并不是说某种数据类型。而是说 int, float,double,long 等类型,都是数字的   题目修改了,帮忙看看
回复 使用道具 举报
12下一页
您需要登录后才可以回帖 登录 | 加入黑马