Java Grid适合输入问题

时间:2013-11-07 01:40:52

标签: java

我运行了我的代码......第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() {

    }

}

1 个答案:

答案 0 :(得分: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时,您尝试在索引w添加。 hey的大小为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