编译的时候提示java.lang.ArrayIndexOutOfBoundsException: -1;请问如何解决。
publicclassJ_Gridl5{int[][]m_board;J_Gridl5(){m_board=newint[3][3];}privatebooleanmb_...
public class J_Gridl5
{
int [][] m_board;
J_Gridl5()
{
m_board = new int [3][3];
}
private boolean mb_dataChectDifferent()
{
int i,j;
int[] digit = new int[10];
for (i=0;i<m_board.length;i++)
{
for(j=0;j<m_board[i].length;j++)
digit[m_board[i][j]]=1; //提示这句有问题
}
for (i=1,j=0;i<digit.length;i++)
j+=digit[i];
if (j==9)
return (true);
return (false);
}
Exception in thread "main" java.lang.ArrayIndexOutOfBoundsException: -1
at J_Gridl5.mb_dataChectDifferent(J_Gridl5.java:70)
at J_Gridl5.mb_dataCheck(J_Gridl5.java:104)
at J_Gridl5.mb_arrange(J_Gridl5.java:119)
at J_Gridl5.main(J_Gridl5.java:130)
代码只是列出我觉得有用的那一小部分 展开
{
int [][] m_board;
J_Gridl5()
{
m_board = new int [3][3];
}
private boolean mb_dataChectDifferent()
{
int i,j;
int[] digit = new int[10];
for (i=0;i<m_board.length;i++)
{
for(j=0;j<m_board[i].length;j++)
digit[m_board[i][j]]=1; //提示这句有问题
}
for (i=1,j=0;i<digit.length;i++)
j+=digit[i];
if (j==9)
return (true);
return (false);
}
Exception in thread "main" java.lang.ArrayIndexOutOfBoundsException: -1
at J_Gridl5.mb_dataChectDifferent(J_Gridl5.java:70)
at J_Gridl5.mb_dataCheck(J_Gridl5.java:104)
at J_Gridl5.mb_arrange(J_Gridl5.java:119)
at J_Gridl5.main(J_Gridl5.java:130)
代码只是列出我觉得有用的那一小部分 展开
3个回答
展开全部
数组下标越界了,看看你的循环中是不是超过数组最大了
追问
数组下标越界我知道,有没有具体点的。不知道应该怎么改
追答
[m_board[i][j]]中的数据作为digit数组的下标,你看看[m_board[i][j]]中的数据是不是有超过10的数存在,因为你的digit数组长度只有10 int[] digit = new int[10];
本回答被提问者采纳
已赞过
已踩过<
评论
收起
你对这个回答的评价是?
展开全部
数组下标越界,应该是你的数组为空,你没有判断,就直接用数组下标去取数组里的元素。
已赞过
已踩过<
评论
收起
你对这个回答的评价是?
展开全部
数组下标越界,打断点调试一下 看m_board[i][j] 取出来的值是否比digit的最大数组索引大
已赞过
已踩过<
评论
收起
你对这个回答的评价是?
推荐律师服务:
若未解决您的问题,请您详细描述您的问题,通过百度律临进行免费专业咨询