本文介绍了java.lang.IndexOutOfBoundsException:索引7,大小:7的处理方法,对大家解决问题具有一定的参考价值,需要的朋友们下面随着小编来一起学习吧!
问题描述
我正在创建一个程序,该程序通过广度搜索找到八皇后问题的解决方案。到目前为止我的代码:
I am creating a program that finds the solutions to the eight queens problem by breadth search. My code so far:
import java.util.*; import java.lang.*; import java.io.*; public class EightQueens { public static void main(String[ ] args) { ArrayList<List<Integer>> states = new ArrayList<List<Integer>>(); List<Integer> start=new ArrayList<Integer>(); for (int s=0; s<8; s++) { start.add(0); } states.add(start); List<Integer> a = new ArrayList<Integer>(); List<Integer> b = new ArrayList<Integer>(); for (int j=1; j<9; j++) { a = states.get(0); states.remove(0); if (j==1) { for (int n=1; n<9; n++) { a.set(0,n); states.add(a); } } else { for (int i=j-1; i>0; i--) { b.add(a.get(i-1)); b.add(a.get(i-1)-1); b.add(a.get(i-1)+1); } for (int n=0; n<8; n++) { List<Integer> c = new ArrayList<Integer>(); for (int t=1; t<9; t++) { c.add(t); } for (int k=0; k<b.size(); k++) { if (c.get(n)== b.get(k)) { c.remove(n); } } for (int r=0; r<c.size(); r++) { if (c.get(r)==n+1) { a.set(j-1,n+1); states.add(a); } } } } } for (int m=0; m< states.size(); m++) { a = states.get(0); for (int p=0; p< a.size(); p++) { int q = a.get(p); System.out.print(q); } states.remove(a); System.out.println(" "); } int numsol = states.size(); System.out.println(numsol); } }此编译没有任何错误,但是当我转到运行程序,我得到以下错误:
This compiles without any errors, but when I go to run the program I get this error:
Exception in thread "main" java.lang.IndexOutofBoundsException: Index: 7, Size: 7 at java.util.ArrayList.rangeCheck(ArrayList.java:635) at java.util.ArrayList.get(Arraylist.java:411) at EightQueens.main(EightQueens.java:48)我该如何解决?
推荐答案Java将0用作第一个索引,而不是一个。相应地调整程序,它将起作用。如果数组中有7个项目,则使用0-6,而不是1-7。
Java uses 0 for the first index, not one. Adjust your program accordingly and it will work. If you have 7 items in an array you use 0-6, not 1-7.
也请对变量使用描述性名称。 a,b,m,x等都不好。
Also, use descriptive names for your variables. a, b, m, x, etc are just bad.
更多推荐
java.lang.IndexOutOfBoundsException:索引7,大小:7
发布评论