java.lang.IndexOutOfBoundsException:索引7,大小:7

编程入门 行业动态 更新时间:2024-10-19 20:37:12
本文介绍了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

本文发布于:2023-11-22 20:36:25,感谢您对本站的认可!
本文链接:https://www.elefans.com/category/jswz/34/1618927.html
版权声明:本站内容均来自互联网,仅供演示用,请勿用于商业和其他非法用途。如果侵犯了您的权益请与我们联系,我们将在24小时内删除。
本文标签:索引   大小   java   lang   IndexOutOfBoundsException

发布评论

评论列表 (有 0 条评论)
草根站长

>www.elefans.com

编程频道|电子爱好者 - 技术资讯及电子产品介绍!