问答详情
源自:4-4 学生选课---添加课程 Ⅰ

越界问报错题

add只能访问已有数据的0、1 两个位置为什么,index写2不报错?

提问者:慕桂英9243443 2018-09-18 23:03

个回答

  • qq_殷少_04114250
    2018-09-25 17:06:45
    已采纳

    你看,原来couresToSlect只有0,1位,你这个时候加cr3到2的位置,讲课里说了ArrayList()的数组长度会跟着你的加的值增大而增大,你加了cr3,这个时候ArrayList()的数组长度就会变成3,但你要是越过了第3位直接加在第四位也就是couresToSlect.add(3, cr3),中间空了一位,ArrayList()的数组长度将不会跟着改变,系统也就会报错。注意!!!:不过这都是几年前的视频了,现在的jdk版本中已经可以这样跳着加数组了,你可以试着在你的myeclipse上打一下这个代码,运行已经不会报错了,会直接加长ArrayList()的数组长度到你指定的地方

  • qq_拿好你的破仑_0
    2019-03-09 09:11:57

    不会报错 但你运行一下就错了

  • qq_殷少_04114250
    2018-09-25 17:16:05

    不好意思,刚刚说错了一个地方,现在的jdk也不可以跳着加,不好意思 搞错了 刚刚说完特意查了下,其它说的都是对的

  • 慕桂英9243443
    2018-09-19 22:47:37

    其实就是视频里的程序

    package com.imooc.collection;


    import java.nio.charset.MalformedInputException;

    import java.util.ArrayList;

    import java.util.List;

    /*

     * 备选课程类;

     */

    public class ListTest {

    /*

    *用于存放备选课程的List 

    */

    public List couresToSlect;

    public ListTest() {

    // TODO Auto-generated constructor stub

    this.couresToSlect=new ArrayList();

    }

    /*

    * 用于往courseToSelect中添加备选课程

    */

    public void testAdd() {

    // 创建一个课程对象,并通过调用 ArrayList的add方法,添加到备选课程list中

    Course cr1= new Course("1", "数据结构");

    couresToSlect.add(cr1);

    //通过 ArrayList的get方法,读取list中第一个元素,取出需要类型转换;

    Course temp =(Course) couresToSlect.get(0);

    System.out.println("添加了课程:"+temp.id+":"+temp.name);

    Course cr2 =new Course("2", "C语言");

    couresToSlect.add(0, cr2);//指定位置插入list,cr1挤到1位置;

    Course temp2 =(Course) couresToSlect.get(0);

    System.out.println("添加了课程:"+temp2.id+":"+temp2.name);

    Course cr3 =new Course("3", "test");

    couresToSlect.add(2, cr3);//能访问只是已有数据位置0、1并插入数据,为什么这里填2不会报错?

    public static void main(String[] args) {

    ListTest lt =new ListTest();

    lt.testAdd();

    }

    }


  • 慕丝8486895
    2018-09-19 12:09:32

    程序不贴出来没法判断啊。