黑马程序员技术交流社区

标题: 技术围观,被第五题给难住了~ [打印本页]

作者: 奔向光明    时间: 2017-6-3 16:05
标题: 技术围观,被第五题给难住了~
分析以下需求,并用代码实现(每个小需求都需要封装成方法)

         (1).求两个数据之和(整数和小数)

         (2).判断两个数据是否相等(整数和小数)

         (3).获取两个数中较大的值(整数和小数)

         (4).获取两个数中较小的值(整数和小数)
                 
         (5).否能用一个方法实现3和4的两个功能

请问第五个问题该怎么用代码实现啊?如果在方法写2个返回值,会报错啊。


作者: shuaiqijie    时间: 2017-6-3 17:11
用形参来辨认是哪个功能,返回不同的值

作者: 黑马王大锤    时间: 2017-6-3 17:39
在方法内部做比较,新建一个数组,依次将两个数存到数组里面,然后返回数组,就可以获得哪个大,哪个小了啊。

作者: 黎明如约而至    时间: 2017-6-3 20:33
可以添加形参做判断,或者用容器装起来返回。

public class Test {
       
        public static void main(String[] args) {
               
                double max = compare(true, 0.5, 56, 0.3, -0.23);
                System.out.println("最大值为:" + max);
               
                double min = compare(false, 0.5, 56, -0.23);
                System.out.println("最小值为:" + min);
        }

        //compare为true,返回最大值,否则返回最小值;
        public static double compare(boolean compare, double... array) {

                double max = array[0];
                double min = array[0];

                for (int i = 0; i < array.length; i++) {
                        if (max < array[i]) {
                                max = array[i];
                        }
                        if (min > array[i]) {
                                min = array[i];
                        }
                }

                if (compare == true) {
                        return max;
                }
                return min;

        }
}

打印结果:

最大值为:56.0
最小值为:-0.23

作者: 奔向光明    时间: 2017-6-3 22:07
黎明如约而至 发表于 2017-6-3 20:33
可以添加形参做判断,或者用容器装起来返回。

public class Test {

谢谢大神

有个疑问:用数组装起来返回,接受的也是个数组。我想把最大值分别付给两个变量,这样怎么操作啊?

作者: 奔向光明    时间: 2017-6-3 22:11
黎明如约而至 发表于 2017-6-3 20:33
可以添加形参做判断,或者用容器装起来返回。

public class Test {

我再好好研究下

作者: 奔向光明    时间: 2017-6-3 22:13
黑马王大锤 发表于 2017-6-3 17:39
在方法内部做比较,新建一个数组,依次将两个数存到数组里面,然后返回数组,就可以获得哪个大,哪个小了啊 ...

接受的是整个数组,那么接受后该如何把最大值和最小值分别赋值给两个变量呢?

作者: 烽火狼烟    时间: 2017-6-4 09:48
回答的好热闹啊
作者: 黎明如约而至    时间: 2017-6-4 23:57
奔向光明 发表于 2017-6-3 22:13
接受的是整个数组,那么接受后该如何把最大值和最小值分别赋值给两个变量呢?
...

存的时候把最小值存第一个位置,把最大值存最后一个位置。
然后用索引取出来就行了
作者: 黎明如约而至    时间: 2017-6-4 23:59
public class MyTest {

        // 传入两个值,把小的放前面,大的放后面,装进数组返回;
        public static int[] compare(int a, int b) {
                if (a < b) {
                        int[] arr = { a, b };
                        return arr;
                } else {
                        int[] arr = { b, a };
                        return arr;
                }
        }

        // 测试compare()方法;
        public static void main(String[] args) {
                int[] arr = compare(8, 7);
                // 取出最小值和最大值;
                int min = arr[0];
                int max = arr[1];

                System.out.println("最大值:" + max + ",最小值为:" + min);
        }

}
作者: lyh20093867    时间: 2017-6-5 08:20
这是方法的重载啊,待会上代码哈,哥们现在在基础班么?
作者: 奔向光明    时间: 2017-6-5 11:08
lyh20093867 发表于 2017-6-5 08:20
这是方法的重载啊,待会上代码哈,哥们现在在基础班么?

是啊,没什么基础,大神多指教哈

作者: 小白--zz    时间: 2017-6-5 11:53
其实要实现功能并不难,主要是看到底考察哪个知识点
我认为这道题的纠结点是返回值是不同类型的应该怎么办
不论是用返回值是数组还是具体数据类型,返回值类型都是确定的

作者: lyh20093867    时间: 2017-6-6 09:28
小白--zz 发表于 2017-6-5 11:53
其实要实现功能并不难,主要是看到底考察哪个知识点
我认为这道题的纠结点是返回值是不同类型的应该怎么办 ...

对的,一个方法里传入不同类型的参数,楼主要求的是传入整数和小数,楼上是分开实现的,我不确定楼主意思是要一个方法里面实现还是不同方法实现。
作者: as2991    时间: 2017-6-6 12:32
public static double maxANDmin(boolean b,double d1 , double d2) {
                if(b)return d1>d2? d1 : d2;
                else return d1<d2? d1 : d2;
        }
只能想到这了.........传true 获取大的 传false 获取小的




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