黑马程序员技术交流社区

标题: 一直报错 第一天看高新视频 第一次用MyEclipse,报错看不懂啊 [打印本页]

作者: 苏伯亚    时间: 2014-3-29 16:07
标题: 一直报错 第一天看高新视频 第一次用MyEclipse,报错看不懂啊
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)
作者: majunm    时间: 2014-3-29 16:23
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 所以发生角标越界异常
作者: majunm    时间: 2014-3-29 16:24
sum += args;
作者: caijunsong    时间: 2014-3-29 16:25
本帖最后由 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!!
作者: 苏伯亚    时间: 2014-3-29 16:43
caijunsong 发表于 2014-3-29 16:25
Exception in thread "main" java.lang.ArrayIndexOutOfBoundsException: 1
这个异常 一眼就能看出来是数 ...

谢谢 懂了
作者: 凌慕枫    时间: 2014-3-29 16:51
看了半天还是不知道你那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. }
复制代码

然后把上面第二个参数改成数组就可以了
作者: 杨殿生    时间: 2014-3-29 20:24
数组越界,数组长度-1
作者: syusikoku    时间: 2014-3-29 21:54
兄弟,你弄错了。可变参数在方法中要做为数组来进行操作的。




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