黑马程序员技术交流社区

标题: 比较数组中元素大小,用到重载时,怎样书写 [打印本页]

作者: 于腾飛    时间: 2013-3-11 15:29
标题: 比较数组中元素大小,用到重载时,怎样书写
本帖最后由 于腾飛 于 2013-3-12 17:46 编辑

我想同时打出double和int两种数据类型数组中的最大值,应该怎样写?红色部分有问题,求助
class Array
{        
        public static void main(String[] args)
        {
                int[] a={1,2,3,4,5};
                int max=getMax(arr);
                System.out.println(max);
                double[] arr={1.1,2.2,3.3,4.5};
                double max=getMax(arr);
                System.out.println(max);

        }

        public static int getMax(int[] arr)
        {
                int max=arr[0];

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

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


作者: scott0610    时间: 2013-3-11 15:33
本帖最后由 袁见 于 2013-3-11 15:36 编辑

public static void main(String[] args) {
                int[] a = { 1, 2, 3, 4, 5 };
                int max = getMax(a);//你在这里根本就没有定义arr的数组,你只定义了一个a数组,所以你的程序在这里报编译错误
                System.out.println(max);
                double[] arr = { 1.1, 2.2, 3.3, 4.5 };
                double max2 = getMax(arr);//这里是因为max变量名和前面int的max变量名相同,编译错误。
                System.out.println(max2);

        }

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

        public static double getMax(double[] arr) {
                double max = arr[0];

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


经过这个程序,希望你在以后的编程中细心一点,粗心是程序的大忌。
作者: 王智威    时间: 2013-3-11 15:44
在传参数的时候是把你定义的传进去,
int[] a={1,2,3,4,5};  int max=getMax(a);

定义变量的是时候名字怎么能一样的,你都是max;
   double  doubleMax=getMax(arr);
这样改了后就可以了

作者: 张宁    时间: 2013-3-11 16:01
class MaxMin
{      
        public static void main(String[] args)
        {
                int[] a={1,2,3,4,5};
                //int max=getMax(arr);这里数组名应该是a
                 int max = getMax(a);
                System.out.println(max);
                double[] arr={1.1,2.2,3.3,4.5};
                //double max=getMax(arr);这个max应经赋值给上面的int max了,所以建议你修改一下
                 double doumax = getMax(arr);
                System.out.println(doumax);

        }

        public static int getMax(int[] arr)
        {
                int max=arr[0];

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

                for(int x=1;x<arr.length;x++)
                {  
                        if(arr[x]>max)
                                max=arr[x];
                }
                return max;               
        }
}
作者: 徐鸿燕    时间: 2013-3-11 16:05
本帖最后由 徐鸿燕 于 2013-3-11 16:15 编辑
  1. public class MaxDemo {
  2.         public static void main(String[] args) {
  3.           int[] a = {1, 2, 3, 4, 5};
  4.           int max_1 = Max.getMax(a);//max_1。
  5.           System.out.println("max_1: " + max_1);
  6.           double[] b = {1.1, 2.2, 3.3, 4.5};
  7.           double max_2 = Max.getMax(b);//max_2。
  8.           System.out.println("max_2: " + max_2);
  9.          
  10.           System.out.println("------------分割线-------------");
  11.           System.out.println("max_1: " + Max.getMax(a));//直接调用int数组a。
  12.           System.out.println("max_2: " + Max.getMax(b));//直接调用double数组b。
  13.         }
  14. }

  15. class Max{
  16.         public static int getMax(int[] arr){
  17.                 int max = arr[0];
  18.                 for (int i = 1; i < arr.length; i++){
  19.                         if (arr[i] > max)
  20.                                 max = arr[i];
  21.                 }
  22.                 return max;
  23.         }
  24.         
  25.         public static double getMax(double[] arr){
  26.                 double max = arr[0];
  27.                 for (int i = 1; i < arr.length; i++){
  28.                         if (arr[i] > max)
  29.                                 max = arr[i];
  30.                 }
  31.                 return max;
  32.         }
  33. }
复制代码
运行结果如下:
max_1: 5
max_2: 4.5
------------分割线-------------
max_1: 5
max_2: 4.5

Ps:虽说看到上面有人已经写出了,但还是决定回复下,毕竟也是自己特意写的。

作者: 于腾飛    时间: 2013-3-11 18:22
袁见 发表于 2013-3-11 15:33
public static void main(String[] args) {
                int[] a = { 1, 2, 3, 4, 5 };
               ...

谢谢  知道错误所在了  非常感谢指导!以后会注意的
作者: 于腾飛    时间: 2013-3-11 18:22
徐鸿燕 发表于 2013-3-11 16:05
运行结果如下:
max_1: 5
max_2: 4.5

谢谢你的提醒,我已经知道错误的所在了!




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