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

 找回密码
 加入黑马

QQ登录

只需一步,快速开始

public class VariableParameter {
        public static void main(String[] agrs){
        //System.out.println(add(2,3));
        System.out.println(add(2,5));
        }


public static int add (int x,int... args){
        int sum=0;
        for(int i=0;i<args.length;i++){
                sum+=args[1];
        }
        return sum;
}}
报错如下:
Exception in thread "main" java.lang.ArrayIndexOutOfBoundsException: 1
        at cn.itcast.day1.VariableParameter.add(VariableParameter.java:13)
        at cn.itcast.day1.VariableParameter.main(VariableParameter.java:6)

评分

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

查看全部评分

7 个回复

正序浏览
兄弟,你弄错了。可变参数在方法中要做为数组来进行操作的。
回复 使用道具 举报
数组越界,数组长度-1
回复 使用道具 举报
看了半天还是不知道你那x是用来做什么的。
  1. public int add (int x,int[] g){
  2.     int sum=0;
  3.     for(int i=0;i<g.length;i++){
  4.             sum+=g[1];
  5.     }
  6.     return sum;
  7. }
复制代码

然后把上面第二个参数改成数组就可以了
回复 使用道具 举报
caijunsong 发表于 2014-3-29 16:25
Exception in thread "main" java.lang.ArrayIndexOutOfBoundsException: 1
这个异常 一眼就能看出来是数 ...

谢谢 懂了
回复 使用道具 举报
本帖最后由 caijunsong 于 2014-3-29 16:26 编辑
  1. public class VariableParameter {
  2.         public static void main(String[] agrs){
  3.         //System.out.println(<FONT color=red>add(2,3));</FONT>
  4.         System.out.println<FONT color=red>(add(2,5))</FONT>;
  5.         }


  6. public static int add (int x,int... args){
  7.         int sum=0;
  8.         for(int i=0;i<args.length;i++){
  9.                 <FONT color=red>sum+=args[1];
  10. </FONT>        }
  11.         return sum;
  12. }}
复制代码

Exception in thread "main" java.lang.ArrayIndexOutOfBoundsException: 1
这个异常 一眼就能看出来是数组越界了  那么你仔细观察下你的数组下
你看看我给你标注红色的代码那   add可以接受多个参数,比如add(2,5);
2给了x,5给了args[0],数组是以0起始的,而你下面sum+=agrs[1];,agrs[1],是没有东西的怎么加啊
解决方法把agrs[1]改成那个agrs[0]或者在add中传三个参数,就ok!!

评分

参与人数 1技术分 +1 收起 理由
菜小徐 + 1

查看全部评分

回复 使用道具 举报
sum += args;
回复 使用道具 举报
public static void main(String[] agrs) {
                        // System.out.println(add(2,3));
                        System.out.println(add(2, 5));
                }

                public static int add(int x, int... args) {
                        int sum = 0;
                        for (int i = 0; i < args.length; i++) {
                                sum += args;
                        }
                        return sum;
                }
// arg[1]  代表什么?  起码数组长度为2  但是 你的长度为1 所以发生角标越界异常

评分

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

查看全部评分

回复 使用道具 举报
您需要登录后才可以回帖 登录 | 加入黑马