为了账号安全,请及时绑定邮箱和手机立即绑定

越界问报错题

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

正在回答

5 回答

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

1 回复 有任何疑惑可以回复我~
#1

慕桂英9243443 提问者

我认真看了下知道了,确实couresToSlect.add(2, cr3)效果等价于couresToSlect.add(cr3)。
2018-09-28 回复 有任何疑惑可以回复我~

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

0 回复 有任何疑惑可以回复我~

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

1 回复 有任何疑惑可以回复我~

其实就是视频里的程序

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();

}

}


0 回复 有任何疑惑可以回复我~

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

0 回复 有任何疑惑可以回复我~
#1

慕桂英9243443 提问者

麻烦看下程序
2018-09-19 回复 有任何疑惑可以回复我~

举报

0/150
提交
取消
Java入门第三季
  • 参与学习       409791    人
  • 解答问题       4340    个

Java中你必须懂得常用技能,不容错过的精彩,快来加入吧

进入课程

越界问报错题

我要回答 关注问题
意见反馈 帮助中心 APP下载
官方微信