0

我运行了我的代码......第 28 行有一个错误。它是那个说 hey.remove(whatnumber); 我无法弄清楚它有什么问题。我尝试使用调试,但我不知道如何使用它。这是代码。

    import java.util.ArrayList;
import java.util.Scanner;



public class ACSL_Grid_Fit {
    public static void main(String args[]) {
        run();
        for(int w=1;w<=25;w++) {
            hey.add(w,w);
        }
    }
    public static ArrayList<Integer> hey = new ArrayList<Integer>();
    public static int howmany;
    public static int whatnumber;
    public static int choice;
    public static Scanner sc = new Scanner(System.in);
    public static void run() {
        input();
        countcalc();
    }
    public static void input() {
        {
        sc.useDelimiter(", |\n");
        howmany= sc.nextInt();
        for(int x = 1; x<=howmany;x++) {
            whatnumber = sc.nextInt();
            hey.remove(whatnumber);
        }
        }
        choice = sc.nextInt();
        switch(choice) {
        case 1:
            int i = 0;
            while(i<hey.get(0)) {
                i++;
            }
            System.out.println(i);
            hey.remove(i);
        case 2:

        case 3:

        }
    }
    public static void countcalc() {

    }

}
4

1 回答 1

0

为避免出现IndexOutOfBoundsException,您需要在尝试之前将值添加到列表中run()

使用此代码,您必须记住没有索引 0

    for(int w=1;w<=25;w++) {
        hey.add(w,w);
    }

您从 1 开始索引,因此 0 为空;

编辑:我刚抓到这个

run()您甚至在列表中没有任何值之前就尝试这样做

   public static void main(String args[]) {
       run();
       for(int w=1;w<=25;w++) {
           hey.add(w,w);
       }
   }

只需切换它们

  public static void main(String args[]) {
       for(int w=1;w<=25;w++) {
          hey.add(w,w);
       }
       run();
  }

编辑:我知道这是一个开始的问题

hey.add(w,w);

w当不存在索引时,您尝试在索引处添加whey大小为 0,直到你添加它。

就这样做吧。

for(int w=1;w<=25;w++) {
      hey.add(w);
}

当您要删除数字时,请使用此

hey.remove(whatnumber - 1)
// example, since 20 is at index 19, you want to remove whatnumber - 1
于 2013-11-07T01:52:14.183 回答