set方法传入的参数i不再有小范围之内,应该确保arraylist离有那么多东西

解决方案 »

  1.   

    use add() instead of set() method when you are reading strings in:
    str.add(in.readLine());
      

  2.   

    there are some other errors, tryimport java.io.*;
    import java.util.*;
    class input //implements List

    public static void main(String args[])
    {
    List str=new ArrayList();
    int i=0;str.clear();while(true)
    {try
    {
    BufferedReader in=new BufferedReader(new InputStreamReader(System.in));
    String s = in.readLine();
    if((s==null) || s.equals("end"))
    break;
    else
    {
    str.add(s);
    i++;
    }
    }
    catch(IOException e)
    {
    System.out.println(e.toString());
    }
    }
    for(i=0;i<str.size()-1;i++)
    {for(int t=i;t<str.size();t++)
    {
    if((str.get(i).toString()).compareTo(str.get(t).toString())>0)
    {
    Object temp=str.get(i);
    str.set(i,str.get(t));
    str.set(t,temp);
    }
    }
    }
    System.out.println("now is the result:");for(i=0;i<str.size();i++)
    System.out.println(str.get(i));

    }
      

  3.   

    ArrayList类在生成实例的时候,如果没有指明大小,则它有一个默认的容量capacity;使用add方法往里面增加数据时,如果类发现容量不够了,会自动
    增加容量;而使用set方法时,只是单纯修改指定位置的对象,如果指定的位置
    超出了容量,就会出现IndexOutException。