A股上市公司传智教育(股票代码 003032)旗下技术交流社区北京昌平校区

 找回密码
 加入黑马

QQ登录

只需一步,快速开始

© 静水流华 中级黑马   /  2014-9-1 11:13  /  2684 人查看  /  17 人回复  /   0 人收藏 转载请遵从CC协议 禁止商业使用本文

  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 个错误


评分

参与人数 1技术分 +1 收起 理由
天黑偷牛 + 1 多提问,多学习

查看全部评分

17 个回复

倒序浏览
这段代码怎么就错了呢
回复 使用道具 举报
你要把chang定义在main的外面。Java函数内不能定义函数。
回复 使用道具 举报 1 0
bullfrog 发表于 2014-9-1 11:23
你要把chang定义在main的外面。Java函数内不能定义函数。

谢谢啦,已经改正。
回复 使用道具 举报
  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 呢?
回复 使用道具 举报
静水流华 发表于 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;
回复 使用道具 举报
为什么没有return呢呢
回复 使用道具 举报
不明觉厉
回复 使用道具 举报
主函数中不能定义函数,可以在主函数外定义。
回复 使用道具 举报
静水流华 发表于 2014-9-1 11:39
这是改正后的代码,但是结果为什么都是4 呢?

return a加完3后的结果
回复 使用道具 举报
还有一个问就是静态和非静态函数之间的调用
回复 使用道具 举报
int类型函数,返回运算结果,主函数中a=chang(a),你会得到你想要的
回复 使用道具 举报
//验证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;                 } }
回复 使用道具 举报

汗,快捷回复怎么那样 ,再发一次吧
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;
                }
}
回复 使用道具 举报
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);

}

}
回复 使用道具 举报
//不好意思 刚才没再检查,这次就好了
//验证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);
                }
}
回复 使用道具 举报
这里的int a是局部变量。
你后边 a=a+3;这里的a是形参,就+了形参,没改局部变量。
回复 使用道具 举报
函数的地位都一样 主函数也是函数 所以把每一个函数分开就对了
回复 使用道具 举报
您需要登录后才可以回帖 登录 | 加入黑马