黑马程序员技术交流社区

标题: 关于今天刚学的函数调用问题的疑问? [打印本页]

作者: 秦旭辉    时间: 2015-10-15 20:47
标题: 关于今天刚学的函数调用问题的疑问?
先看代码  这是正常的
class Demo
{
       
        public static void main(String[] args)
        {
               
               
        System.out.println(comepare(10,10));
        System.out.println(comepare(10,30));       
        System.out.println("************************************************");       
        juxing(3,5);
        }
        public static String comepare(int a,int b){
                String x;
               
                if (a==b)
                {
                        x="相等";
                }
                else{
                        x="bu相等";
                }
                return x;
        }
        public static void juxing(int a,int b)
        {
                for (int x=0;x<=a ;x++ )
                {
                        for (int y=0;y<=b ;y++ )
                        {
                                System.out.print('#');
                        }
                        System.out.println();
                       
                }
               
        }
}

然后我自己写的时候 最后一个打印矩形的方面我自己写的是这样 吧void改为char了  加了个return 然后一运行程序就停不下来了  求解?
class Demo
{
       
        public static void main(String[] args)
        {
               
               
        System.out.println(comepare(10,10));
        System.out.println(comepare(10,30));       
        System.out.println("************************************************");       
        juxing(3,5);
        }
        public static String comepare(int a,int b){
                String x;
               
                if (a==b)
                {
                        x="相等";
                }
                else{
                        x="bu相等";
                }
                return x;
        }
        public static char juxing(int a,int b)
        {
                for (int x=0;x<=a ;x++ )
                {
                        for (int y=0;y<=b ;y++ )
                        {
                                System.out.print('#');
                        }
                        System.out.println();
                       
                }
                return juxing(a,b);
        }
}




作者: ddsx    时间: 2015-10-15 22:06
没有具体返回值啊亲
作者: 秦旭辉    时间: 2015-10-15 22:39
ddsx 发表于 2015-10-15 22:06
没有具体返回值啊亲

能修改一下吗 谢谢了
作者: 秦旭辉    时间: 2015-10-15 22:48
秦旭辉 发表于 2015-10-15 22:39
能修改一下吗 谢谢了

比如说 return juxing(5,6); 前面怎样调用 怎样打印出来?这个弄了好一会还是不会
作者: ddsx    时间: 2015-10-16 19:39
没有返回值用void,你改成char当然不行。没有返回值不用写return,
你在主函数 输入 juxing(3,5);  就可以调用了。看下毕老师的视频,讲的很详细。
作者: 秦旭辉    时间: 2015-10-16 23:08
ddsx 发表于 2015-10-16 19:39
没有返回值用void,你改成char当然不行。没有返回值不用写return,
你在主函数 输入 juxing(3,5);  就可以 ...

好的 谢谢了
作者: 豆豆的小幸福    时间: 2015-10-17 00:33
首先,本来这个函数的功能就是实现在屏幕上打印出一个矩形,主函数中调用juxing(a,b){ }这个函数后打印出来矩形就好了,不用返回值的。
其次,你加的return语句相当于函数的递归,而且是无限循环的那种递归,因为没有令整个递归结束的条件,所以停不下来,一直打印矩形。
据你自己写的自定义函数juxing(){} , 你主函数中调用juxing(3,5)后,这个函数将入栈,首先这个函数输出一个矩形,但是由于你加了return juxing(a,b); 那么意思是又返回到了juxing(3,5),接下来将继续调用juxing(){}这个函数,而且无限循环下去。
作者: 秦旭辉    时间: 2015-10-17 21:15
豆豆的小幸福 发表于 2015-10-17 00:33
首先,本来这个函数的功能就是实现在屏幕上打印出一个矩形,主函数中调用juxing(a,b){ }这个函数后打印出来 ...

条理清晰 回答专业 厉害!
作者: yuanjun52306    时间: 2015-10-17 21:30
这是递归吗。。这么写就成死循环了




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