Java 8 尝试使用list.contain(…)时发生IndexOutOfBoundsException,不确定如何修复 publicstaticvoidmain(字符串[]args){ List stuff=new ArrayList(); List fc=new ArrayList(); List on=new ArrayList(); 列表完成=新建ArrayList(); int d=0; int x=0; int r=0; //“输入”是一个包含用户所有输入的数组。 //您必须从“输入”中提取数据并将其存储在 //一种有效的数据类型 扫描仪输入=新扫描仪(系统输入); int输入_size=0; 输入尺寸=100; 字符串[]输入=新字符串[输入大小]; 对于(int i=0;i

Java 8 尝试使用list.contain(…)时发生IndexOutOfBoundsException,不确定如何修复 publicstaticvoidmain(字符串[]args){ List stuff=new ArrayList(); List fc=new ArrayList(); List on=new ArrayList(); 列表完成=新建ArrayList(); int d=0; int x=0; int r=0; //“输入”是一个包含用户所有输入的数组。 //您必须从“输入”中提取数据并将其存储在 //一种有效的数据类型 扫描仪输入=新扫描仪(系统输入); int输入_size=0; 输入尺寸=100; 字符串[]输入=新字符串[输入大小]; 对于(int i=0;i,java-8,indexoutofboundsexception,Java 8,Indexoutofboundsexception,,我认为数组上的为空。 看: public static void main(String[] args) { List<String> stuff = new ArrayList<String>(); List<String> fc = new ArrayList<String>(); List<String> on = new ArrayList<String>(); List<

,我认为数组上的
为空。

看:

public static void main(String[] args)  {
    List<String> stuff = new ArrayList<String>();
    List<String> fc = new ArrayList<String>();
    List<String> on = new ArrayList<String>();
    List<String> done = new ArrayList<String>();

    int d=0;
    int x=0;
    int r=0;

    //"inputs" is an array with all the inputs from the user.  
    //You will have to go through and extract the data from "inputs" and store it in     
    //a data type that works
    Scanner in = new Scanner(System.in);
    int inputs_size = 0;
    inputs_size = 100;

    String[] inputs = new String[inputs_size];
    for(int i = 0; i < inputs_size; i++) {
        String inputs_item;
        try {
            inputs_item = in.nextLine();
        } catch (Exception e) {
            inputs_item = null;
        }
        inputs[i] = inputs_item;
    }

    for(int n=0; n<inputs.length-1; n++){
        if(inputs[n]==null){
            break;
        }
        stuff.add(inputs[n]);
    }

    while(d<stuff.size()){
        if(stuff.get(d).equals("0")){
              x++;
        }
        d++;
    }

    for(int t=0; t<stuff.size(); t++){
        if(stuff.get(t).equals("0")){
            break;
        }
        fc.add(stuff.get(t));
    }

    r=fc.size();

    while(r<stuff.size()-1){
        if(stuff.get(r).equals("0")){
            r++;
            x=x-1;
        }

        if(x==4 && stuff.get(r)!="0"){
            on.add(stuff.get(r));
        }
        if(x==3 && stuff.get(r)!="0"){
            tw.add(stuff.get(r));
        }
        if(x==2 && stuff.get(r)!="0"){
            th.add(stuff.get(r));
        }
        if(x==1 && stuff.get(r)!="0"){
            fo.add(stuff.get(r));
        }
        if(x==0 && stuff.get(r)!="0"){
            fi.add(stuff.get(r));
        }
        if(x==-1 && stuff.get(r)!="0"){
            si.add(stuff.get(r));
        }
        r++;
    }

    int z=0;
    int counter = 1;
    for(; counter < fc.size(); counter++) {
        if(counter>fc.size()){
            break;
        }

        **if(fc.contains(on.get(counter)))** {
            z=0;
        }
        else{
            z=1;
            break;
        }
    }
    if(z==0){
        done.add(on.get(0));
    }
    counter=1;
    z=0;

    System.out.println(done);

    }
}

这是您唯一一次尝试在
上向您的
添加内容。您的
fc
内容
大小将是相同的,因为您没有使其不同的内容(而不是此
.equals(“0”)
,但如果您输入任何其他内容,它将是相同的)。之后,我们有:

if(x==4 && stuff.get(r)!="0"){
  on.add(stuff.get(r));
}
r=fc.size();

虽然(Ry)您的计数器从1变为
fc.size()
。为什么您希望
上的
(即另一个集合)至少有与
fc
一样多的元素?另一方面,我不确定您是否真的理解您所写的内容。您是否将
中断
误认为
继续
,并且您是否意识到
用于(int n=0;n
r=fc.size();

while(r<stuff.size()-1){