亚洲在线久爱草,狠狠天天香蕉网,天天搞日日干久草,伊人亚洲日本欧美

為了賬號安全,請及時綁定郵箱和手機立即綁定

越界問報錯題

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
提交
取消

越界問報錯題

我要回答 關注問題
微信客服

購課補貼
聯系客服咨詢優惠詳情

幫助反饋 APP下載

慕課網APP
您的移動學習伙伴

公眾號

掃描二維碼
關注慕課網微信公眾號