黑马程序员技术交流社区

标题: 我是新手,怎么只写一个调用函数,就可以同时输出最大值和最小值,还不会越界 [打印本页]

作者: TS__likewise    时间: 2014-5-24 09:21
标题: 我是新手,怎么只写一个调用函数,就可以同时输出最大值和最小值,还不会越界
public static void main(string[]args)
{
        int arr[]={3,4,2,6,8,9};
int max=getMax(arr);
int min=getMin(arr);
system.out.println("max"+max);
system.out.println("min"+min);
}
public static int getMax(int[]arr)
{
       int max=0;
        for(int x=1;x<arr.length;x++)
        {
               if(arr[x]>arr[max])
             max=x;
        }
return arr[max];
}
public static int getMin(int[]arr)
{
       int min=0;
        for(int x=1;x<arr.length;x++)
        {
               if(arr[x]<arr[min])
           min=x;
        }
return arr[min];
}
作者: 无奈的我+.l    时间: 2014-5-24 10:17
你想说明什么,亲
作者: 247033993@qq.co    时间: 2014-5-24 10:23
你是想说调用一个方法,同时输出最大值和最小值吗
作者: BigKarel    时间: 2014-5-24 14:49
  1. public static void main(string[]args)
  2. {
  3.         int[] arr={3,4,2,6,8,9};
  4.         getM(arr);
  5. }
  6. public static int getM(int[]arr)
  7. {
  8.        int max=0;
  9.         for(int x=1;x<arr.length;x++)
  10.         {
  11.                if(arr[x]>arr[max])
  12.              max=x;
  13.         }

  14.         int min=0;
  15.         for(int x=1;x<arr.length;x++)
  16.         {
  17.                if(arr[x]<arr[min])
  18.            min=x;
  19.         }
  20.         system.out.println("max"+max);
  21.         system.out.println("min"+min);
  22. }
复制代码
你是想这样写吗
作者: 丁绍然    时间: 2014-5-24 15:17
返回值只能是一个,貌似不能同时返回最大和最小值,不过可以在方法里面直接打印出来,不返回
作者: gentleman    时间: 2014-5-24 16:58
本帖最后由 gentleman 于 2014-5-26 08:15 编辑

  1. <P><table cellspacing="0" cellpadding="0" style="table-layout: fixed; width: 811px; font-size: 12px; line-height: 18px; background-color: rgb(255, 255, 255);"><tbody><tr><td class="t_f" id="postmessage_745685" style="font-size: 14px;">public static void main(string[]args)
  2. {
  3.         int arr[]={3,4,2,6,8,9};
  4. int[] rArr=getNum(arr);
  5. int min= rArr[0];
  6. int max=rArr[1];
  7. system.out.println("max"+max);
  8. system.out.println("min"+min);
  9. }
  10. public static int[] getNum(int[] arr)
  11. {
  12.    
  13.         for(int x=1;x<arr.length;x++)
  14.         {
  15.                if(arr[x]>arr[0])
  16.              rArr[1]=arr[x]; </P>
  17. <P>              if(arr[x]<arr[0])
  18.               rArr[0]=arr[x];
  19.         }
  20.       
  21.         return rArr;
  22. }


  23. //想要返回多个值那就用数组吧!</P>
复制代码


作者: 路漫漫_求索    时间: 2014-5-24 19:54
package cn.itcast.day3;

public class arr {

        /**
         * @param args
         */
        public static void main(String[] args) {
                // TODO Auto-generated method stub
                int[]arr = {3,4,5,2,7};
                MaxAndMin(arr);
        }
        //定义一个方法求最大值和最小值
        public static void MaxAndMin(int[]arr){
                //求最大值
                int max=arr[0];
                for(int i=0; i<arr.length; i++){
                        if(max<arr[i]){
                                max=arr[i];
                        }
                }
               
                //求最小值
                int min=arr[0];
                for(int i=0; i<arr.length;i++){
                        if(min>arr[0]){
                                min=arr[i];
                        }
                }
                System.out.println("最小值是:"+min+"\n最大值是:"+max);
        }
}

作者: TS__likewise    时间: 2014-5-25 18:40
gentleman 发表于 2014-5-24 16:58

谢谢你的意思是吧两个最值存到数组里,然后输出对吧,你说在只一个For循环里能不能实现,
作者: TS__likewise    时间: 2014-5-25 18:41
无奈的我+.l 发表于 2014-5-24 10:17
你想说明什么,亲

亲,我是想少写点代码,只在一个里就能实现的东东
作者: TS__likewise    时间: 2014-5-25 18:43
247033993@qq.co 发表于 2014-5-24 10:23
你是想说调用一个方法,同时输出最大值和最小值吗

恩恩是的
作者: TS__likewise    时间: 2014-5-25 18:44
BigKarel 发表于 2014-5-24 14:49
你是想这样写吗

不是不是,就用一个循环
作者: TS__likewise    时间: 2014-5-25 18:45
丁绍然 发表于 2014-5-24 15:17
返回值只能是一个,貌似不能同时返回最大和最小值,不过可以在方法里面直接打印出来,不返回 ...

奥奥谢谢
作者: TS__likewise    时间: 2014-5-25 18:47
路漫漫_求索 发表于 2014-5-24 19:54
package cn.itcast.day3;

public class arr {

十分感谢
作者: pandapan    时间: 2014-5-25 22:53
楼主提问的是两个问题,
1.怎么在一个for循环中实现既能够计算出最大值又能够计算出最小值
2.怎么在返回值中即把最大值返回也把最小值返回
这两个问题都是可以解决的,
问题1的解决思路,将数据[0]的值设为最初的最大值和最小值,然后循环,循环中发现比现在的最大值大,那么将新的最大值设置为循环中发现的值,如果新循环中发现比现在的最小值小,那么僵新的最小值设置为循环中发现的最小值,依次类推
问题2的解决思路,这个就是思维习惯的问题了,可以将返回结果设置为数组,[0],[1]分别为最大小值,或者使用集合,HashMap,最大值最小值进行映射,或者使用面向对象的思路,返回对象,封装这最大值和最小者的一个对象,思路多多.
我提供我的一个解决问题的案例吧.希望能够帮到你

  1. import java.util.HashMap;
  2. import java.util.Map;

  3. public class MaxAndMinTest {
  4.         public static void main(String[] args) {
  5.                 int[] arr = {3,4,8,6};
  6.                 Map<String,Integer> numMap = calMaxAndMin(arr);
  7.                 System.out.println("max="+numMap.get("max"));
  8.                 System.out.println("min="+numMap.get("min"));
  9.         }
  10.         public static Map<String,Integer> calMaxAndMin(int[] arr){
  11.                 int max = arr[0];
  12.                 int min = arr[0];
  13.                 Map<String,Integer> numMap = new HashMap<String, Integer>();
  14.                 //一次for循环中,便可以同时计算出最大值和最小值
  15.                 for(int i=1;i<arr.length;i++){
  16.                         if(arr[i]>max){
  17.                                 max = arr[i];
  18.                         }else if(arr[i]<min){
  19.                                 min = arr[i];
  20.                         }
  21.                 }
  22.                 numMap.put("max", max);
  23.                 numMap.put("min", min);
  24.                 return numMap;
  25.         }
  26. }
复制代码





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