黑马程序员技术交流社区

标题: 才学到函数 帮看看这个小问题.....太简单问题都不敢问 哎 [打印本页]

作者: 28了还能学吗    时间: 2014-9-3 09:05
标题: 才学到函数 帮看看这个小问题.....太简单问题都不敢问 哎
昨天晚上才看到视频函数这里
下面这段,根据视频上的Demo演示,第二种用public static void  就报错。说需要int,  找到void
public class GetResult{
        public static void main(String[] args){
                int x=getResult(4);
                System.out.println("x="+x);
        }
                /*
        public static int getResult(int sum){
                return sum*3+5;
                }
                */
        public static void getResult(int sum){
                System.out.println(sum*3+5);
        }
}


求破


作者: 刘挺    时间: 2014-9-3 09:38
你函数与返回值,是int型,所以你也要用int型来接受数据。不能void

作者: ___瘦不了    时间: 2014-9-3 10:05
public static void main(String args[])
        {
               
                int x =4;
                getResult(x);
                System.out.println("x="+x);
               
        }


public static void main(String args[])
        {
               
                int x =getResult(4);
               
                System.out.println("x="+x);
               
        }
楼主,这两个main函数有区别么?其实这道题的问题在于你为X赋值的问题上,前一种是先为X赋值,再getResult,而后一种的写法是先getResult,用getResult的结果为X赋值。问题到这就明白了,你先getResult再把结果赋给X,而void方法是无返回值,无值返回怎么能给X赋上值呢?X没有赋上值当然会报错
作者: 28了还能学吗    时间: 2014-9-3 10:22
___瘦不了 发表于 2014-9-3 10:05
public static void main(String args[])
        {
               

谢谢谢谢,还几遍才看明白  谢谢啊
作者: ximi    时间: 2014-9-3 10:27
___瘦不了 发表于 2014-9-3 10:05
public static void main(String args[])
        {
               

很好的回答啊
作者: 柳超    时间: 2014-9-3 10:35
变量声名后必须要初始化才能使用,如果未初始化就使用编译器会报错,除非不使用可以不给他赋值,但是这样没有意义。你的第二个方法返回值是空不是给x赋值,直接把结果打印了,这里面你不能使用x来接收一个void的值,X未初始化不能使用他来打印
作者: lfsfxyzljhm    时间: 2014-9-3 10:47
本帖最后由 lfsfxyzljhm 于 2014-9-3 10:49 编辑

这个问题详细的给你解释一下,你在主函数中调用getResult(sum)方法,并把它赋值给你定义的一个整型变量,表明,你调用的这个函数肯定有返回值,而且是整型类型。修改的方法如下:将主函数中的代码修改如下所示即可:
      {
        getResult(3);
      }

作者: 28了还能学吗    时间: 2014-9-3 11:06
lfsfxyzljhm 发表于 2014-9-3 10:47
这个问题详细的给你解释一下,你在主函数中调用getResult(sum)方法,并把它赋值给你定义的一个整型变量,表 ...

谢谢啊  貌似就是这样的啊   会做了,但比较愚钝,其实我还没理解 没懂
作者: ___瘦不了    时间: 2014-9-3 11:22
28了还能学吗 发表于 2014-9-3 10:22
谢谢谢谢,还几遍才看明白  谢谢啊

不客气,题目因人而异,没有一定的难易,希望楼主有不会的就发帖问,不要因为自己觉得简单就不好意思问,把不懂的弄懂了才是关键,我们都是进黑马的,互相鼓励,互相帮助,加油
作者: 28了还能学吗    时间: 2014-9-3 11:53
___瘦不了 发表于 2014-9-3 11:22
不客气,题目因人而异,没有一定的难易,希望楼主有不会的就发帖问,不要因为自己觉得简单就不好意思问, ...

非常感谢,听你这么说,有问题我就大胆的问了
作者: lfsfxyzljhm    时间: 2014-9-3 22:47
28了还能学吗 发表于 2014-9-3 11:06
谢谢啊  貌似就是这样的啊   会做了,但比较愚钝,其实我还没理解 没懂

不客气,以后可能还是同学呢。
作者: 冒牌高手    时间: 2014-9-4 07:43
两个函数的名字和参数列表都相同,但是返回值类型不一样,在编译时就会出错,因为系统不知道你要调用哪一个方法.....好好看一下方法重载那一部分
作者: 李天富    时间: 2014-9-4 18:34
  int x=getResult(4);这句是赋值操作,而后面的函数没有返回值,肯定不能赋值啊。
说下你下面两个函数的区别。第一个的功能是,你给它一个num,它处理完之后,还给你一个int型数据的结果,可以被int型变量接收。第二个的功能是,你给它一个num,它处理完之后,直接将结果打印,没有返回值。
作者: 范鹏霄    时间: 2014-9-4 18:51
public static void main(String args[])返回值是int不是void
作者: 十万一千    时间: 2014-9-6 00:04
方法没有返回结果时,怎么给接受它的变量赋值呢?




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