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

 找回密码
 加入黑马

QQ登录

只需一步,快速开始

© 骆龙 中级黑马   /  2012-2-24 22:18  /  2366 人查看  /  8 人回复  /   0 人收藏 转载请遵从CC协议 禁止商业使用本文

class Overloading
{
        public static void main(String[] args)
        {
                int x=sum(5,6);
                int y=sum1(1,2,3);
                System.out.println(x,y);
        }

        public static int sum(int x,int y)
        {
                return x+y;
        }

        public static int sum1(int x,int y,int z)
        {
                return x+y+z;
        }
}
运行后 显示 错误 实际参数和形式参数长度不同 是什么意思
不是都定义了 int 整型么 ?

评分

参与人数 1技术分 +1 收起 理由
admin + 1

查看全部评分

8 个回复

倒序浏览
本帖最后由 张一凡 于 2012-2-24 22:55 编辑

主函数里的System.out.println(x,y);格式写错了, System.out.println(x+","+y);这样就没问题了。
还有你的类名是写的重载,为什么不用重载呢?
我帮你把代码优化下:
  1. class Overloading
  2. {
  3.          public static void main(String[] args)
  4.          {
  5.                  int x=sum(5,6);
  6.                  int y=sum(1,2,3);
  7.                  System.out.println("x="+x+",y="+y);
  8.          }

  9.         public static int sum(int x,int y)
  10.          {
  11.                  return x+y;
  12.          }

  13.         public static int sum(int x,int y,int z)
  14.          {
  15.                  return sum(x,y)+z;
  16.          }
  17. }
复制代码
当然输出语句也可以封装下。
回复 使用道具 举报
张一凡 发表于 2012-2-24 22:53
主函数里的System.out.println(x,y);格式写错了, System.out.println(x+","+y);这样就没问题了。
还有你的 ...

就是想问 形式参数和实际参数长度不同 这句话怎么理解,不都是int么
知道错误了 但不知道为什么是这个错误提示
回复 使用道具 举报
本帖最后由 H07000223 于 2012-2-24 23:21 编辑

System.out.println(x,y);没这种语法。

System.out.println方法只接受一个参数,(x,y)这是传入了两个类型的参数,你可以把他们整合成一个参数。也可以打印两遍。

System.out.println(x+" "+ y);或者System.out.println(x);
                                                     System.out.println(y);


形式参数和实际参数长度不同理解就是:人家只要一个,你非要塞两个(形式上只需要一个,实际上却塞了两个,不合适啊!)

评分

参与人数 1技术分 +1 收起 理由
admin + 1

查看全部评分

回复 使用道具 举报
函数定义:形式参数就一个,你硬要传两个所以形式参数和实际参数长度不同,懂了没1=2吗 懂?
回复 使用道具 举报
super_ln 发表于 2012-2-24 23:13
就是想问 形式参数和实际参数长度不同 这句话怎么理解,不都是int么
知道错误了 但不知道为什么是这个错 ...

你这段代码我编译了下,除了那个输出语句写错了外,其他的没什么问题。
而你说的,形参和实参长度不同,应该是传递的参数个数有所不同。

评分

参与人数 1技术分 +1 收起 理由
admin + 1

查看全部评分

回复 使用道具 举报
我们经常会见到一个词语叫,参数列表,到底参数在内存中是怎么样存在的,
虽然我还没有学到相关的知识,但我想应该是这样:
一个非空参函数被加载后,他会被分配一个空间来存放参数的对象,这些参数的对象又要属于一个叫做参数列表的对象,
那么这个参数列表看起来就像是一个数组,但是参数可能不是同一类的,有int有char还可能有其他类的引用...他们一个个向下排列,
肯定是有长度的,就像数组的角标越界错误一样,长度的错误显然是jvm会自动检查的。
知识欠缺,这只是我的猜测和理解。
回复 使用道具 举报
杨盼 中级黑马 2012-2-25 20:54:12
8#
System.out.println(x,y);
这是传入了两个参数,System.out.println()这个最多只能传入一个参数,System.out.print()必须传入一个参数
回复 使用道具 举报
System.out.println(x+y);  这样就行了!
回复 使用道具 举报
您需要登录后才可以回帖 登录 | 加入黑马