黑马程序员技术交流社区

标题: 这段代码哪错了? [打印本页]

作者: 静水流华    时间: 2014-9-1 11:13
标题: 这段代码哪错了?
  1. //验证java中参数传递问题
  2. class  changDate
  3. {

  4.         public static void main(String[] args)
  5.         {
  6.                
  7.                 //调用该函数
  8.                 int a =4;
  9.                 System.out.println(x);
  10.                 chang(a);
  11.                 System.out.println(a);
  12.         //定义一个函数
  13.         void chang(int x)
  14.                 {
  15.                         x =x+3;
  16.                 }
  17.         }
  18. }
复制代码
changDate.java:14: 错误: 非法的表达式开始
        void chang(int x)
        ^
changDate.java:14: 错误: 需要';'
        void chang(int x)
                  ^
changDate.java:14: 错误: 需要';'
        void chang(int x)
                        ^
3 个错误



作者: 静水流华    时间: 2014-9-1 11:17
这段代码怎么就错了呢
作者: bullfrog    时间: 2014-9-1 11:23
你要把chang定义在main的外面。Java函数内不能定义函数。
作者: 静水流华    时间: 2014-9-1 11:38
bullfrog 发表于 2014-9-1 11:23
你要把chang定义在main的外面。Java函数内不能定义函数。

谢谢啦,已经改正。

作者: 静水流华    时间: 2014-9-1 11:39
  1. //验证java中参数传递问题
  2. class  changDate
  3. {

  4.         public static void main(String[] args)
  5.         {
  6.                
  7.                 //调用该函数
  8.                 int a =4;
  9.                 System.out.println(a);
  10.                 chang(a);
  11.                 System.out.println(a);
  12.        
  13.         
  14.         }
  15.         //定义一个函数
  16.         public static        void chang(int a)
  17.                 {
  18.                         a =a+3;
  19.                 }
  20. }
复制代码

这是改正后的代码,但是结果为什么都是4 呢?
作者: bullfrog    时间: 2014-9-1 11:59
静水流华 发表于 2014-9-1 11:39
这是改正后的代码,但是结果为什么都是4 呢?

chang里的 int a (这个a可以随便改名字), 在你执行完 chang(a);这一行,即调用完成chang函数后,就从内存中消灭了, 这个a你无论怎么改,其作用范围都只在函数内,不会改变main里的int a=4, 因为你操作的是函数内的int a, 而main里的int a, 你只是将它的值传给了chang函数而已。
而你下一行println(a) 用的是你定义在main里的 int a=4;

作者: ___瘦不了    时间: 2014-9-1 12:51
为什么没有return呢呢
作者: 28了还能学吗    时间: 2014-9-1 12:53
不明觉厉
作者: MR.Sun    时间: 2014-9-1 12:54
主函数中不能定义函数,可以在主函数外定义。
作者: 一顿一只牛    时间: 2014-9-1 13:17
静水流华 发表于 2014-9-1 11:39
这是改正后的代码,但是结果为什么都是4 呢?

return a加完3后的结果
作者: 夜半风    时间: 2014-9-1 14:25
还有一个问就是静态和非静态函数之间的调用
作者: 刘挺    时间: 2014-9-1 14:47
int类型函数,返回运算结果,主函数中a=chang(a),你会得到你想要的
作者: 梦里听传说    时间: 2014-9-1 16:19
//验证java中参数传递问题 class  ceshi {          public static void main(String[] args)          {                                  //调用该函数                 int a =4;                 System.out.println(a);                                    //System.out.println(x);  你函数内没有定义X 变量 你此时也没调用 所以这错了,上面是我改的不知道是不是你本意                  chang(a);                 System.out.println(a);         //定义一个函数                                          }                          void chang(int x)//你这个方法定义到主函数里面了 拿出来就好了                 {                         x =x+3;                 } }
作者: 梦里听传说    时间: 2014-9-1 16:20

汗,快捷回复怎么那样 ,再发一次吧
class  ceshi
{

        public static void main(String[] args)
        {
               
                //调用该函数
                int a =4;
                System.out.println(a);   
                                //System.out.println(x);  你函数内没有定义X 变量 你此时也没调用 所以这错了,上面是我改的不知道是不是你本意
                chang(a);
                System.out.println(a);
        //定义一个函数
      
      
       
                }

                        void chang(int x)//你这个方法定义到主函数里面了 拿出来就好了
                {
                        x =x+3;
                }
}
作者: 空洞的望着窗外    时间: 2014-9-1 16:25
class x
{public void main(String[] args){
int a=4;
x.chang(a);
x.chang(3);
}
public static int chang(int x){
return x=x+3;
SOP("x="+x);

}

}
作者: 梦里听传说    时间: 2014-9-1 16:26
//不好意思 刚才没再检查,这次就好了
//验证java中参数传递问题
class  ceshi
{

        public static void main(String[] args)
        {
               
                //调用该函数
                int a =4;
                System.out.println(a);   
                                //System.out.println(x);  你函数内没有定义X 变量 你此时也没调用 所以这错了,上面是我改的不知道是不是你本意
                chang(a);
                                //System.out.println(x); 因为你的chang(a);没有返回值,所以你不能打印a 你把打印移动到方法内就好了,
                                //要么你把方法改了
               
        //定义一个函数
      
      
       
                }

                static void chang(int x)//你这个方法定义到主函数里面了 拿出来就好了 还有因为你主函数是静态的所以 此方法也要定义成静态
                {
                        x =x+3;
                                                System.out.println(x);
                }
}

作者: MichaelRodman    时间: 2014-9-1 17:53
这里的int a是局部变量。
你后边 a=a+3;这里的a是形参,就+了形参,没改局部变量。
作者: 默默丶    时间: 2014-9-1 19:02
函数的地位都一样 主函数也是函数 所以把每一个函数分开就对了




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