ArrayList中的set()

时间:2011-03-17 08:15:26

标签: java arraylist

我是Java新手,请帮助我。

我的节目是

import java.util.*;
import java.lang.*;
class Test
{
    public static void main(String[] args)
    {
        ArrayList al=new ArrayList();
        al.add("a");
        al.add("b");
        for(int i=1;i<=10;i++)
        {
            al.add(i);
        }
        al.remove("a");
        al.set(1,"c");
        for(int j=3;j<=al.size();j++)
        {
            al.set(j,"z");
        }

        System.out.println(al);
    }
};

在上面有任何错误........ plz帮帮我

5 个答案:

答案 0 :(得分:4)

a)你需要让类公开运行它:

public class Test
{

b)最后一个分号是语法错误不是,它只是不必要的噪音。

c)这失败了IndexOutOfBoundsException

for(int j = 3; j <= al.size(); j++){
    al.set(j, "z");
}

需要:

for(int j = 3; j < al.size(); j++){
    al.set(j, "z");
}

说明:列表索引从零开始,因此具有n个元素的List中的最高位置是n-1


顺便说一句,上面的代码可以用这样更优雅的方式编写:

Collections.fill(al.subList(3, al.size()), "z");

参考:

答案 1 :(得分:1)

此代码将抛出一个IndexOutOfBounds异常,因为该行:

    for (int j = 3; j <= al.size(); j++) {

要修复它,您需要将其更改为:

    for (int j = 3; j < al.size(); j++) {

这是因为&lt; =表示你的for循环遍历列表的末尾。

答案 2 :(得分:0)

List~和Arrayindices从0开始,而不是1.所以如果你有3个元素的列表,它们会从索引:0,1,2开始。所以你通常迭代(i = 0; i&lt; list。 size(); ++ i)。小于,不小于/等于。

for (int j=3; j < al.size (); j++)

答案 3 :(得分:0)

1.最后一行的分号

2.从

更改代码
for(int j=3;j<=al.size();j++)

for(int j=3;j<al.size();j++)

始终从第0个索引到小于数组的大小访问Arraylist。

答案 4 :(得分:0)

我认为有必要将起始索引从3改为2:

for (int j=2; j < al.size (); j++)