Java 为什么我的阵型会越界?
我试图访问数组的下一个元素,但它说我超出了范围Java 为什么我的阵型会越界?,java,arrays,conways-game-of-life,Java,Arrays,Conways Game Of Life,我试图访问数组的下一个元素,但它说我超出了范围 private void board(Scanner file) { String[][] board = new String[r][c]; //r=25 c=75 int col = 0; for(int row = 0; file.hasNextLine() && row<r ; row++){ board[row]=file.nextLine().split("");
private void board(Scanner file) {
String[][] board = new String[r][c]; //r=25 c=75
int col = 0;
for(int row = 0; file.hasNextLine() && row<r ; row++){
board[row]=file.nextLine().split("");
neighbors(board,row,col);
col++;
System.out.println(file.next());
}
}
private void neighbors(String[][] board, int row, int col) {
if(col<c && "X".equals(board[row][col+1])){//right
neighbors++;
System.out.println(neighbors);
}
}
专用作废板(扫描文件){
字符串[][]板=新字符串[r][c];//r=25 c=75
int col=0;
对于(int row=0;file.hasNextLine()&&row行if(colboard[row]=file.nextLine().split(“”;
这一行将根据file.nextLine()
和split()
“返回的行生成任意长度的新数组”,因此board[row]
现在指的数组的长度不能等于c,我想您的split(“”
将返回大小为1的数组
因此,使用col
另外,重新考虑您的拆分(“”)
,例如,如果行是1 2 3
您可以使用split(“”)
你要去哪里?我的邻居方法,当我检查右边的邻居时,如果你的列在右边没有邻居怎么办?你想过吗?好的,我想我明白了,所以我想找到列值,然后比较它,这样就不会比较两次了?问题与多少次无关您正在使用col
。您正在检查col
是否在边界内--很好。但是您没有使用col
作为数组索引;您正在使用col+1
。即使col
在边界内,col+1
也可能不在边界内。您可能想验证c!=0&&col
我知道c!=0,它的final at 75.im在.X处拆分,这就是我之所以选择“”的原因,因为它不是一个空格。那么这是否会不正确?例如,第一行可能是………..xxxxxxxxxxxxx.X.X.X.X.X.xxxxx.X.X等。在示例中,您给出了希望从拆分中得到的元素是什么()是吗{xxxxxxxxx,x,x,x,x,x,x,xxxxx,x,…..等}如果是这样,您应该使用split(“.”;
我可能认为您需要组成行的字符数组,如果是这样,您不能使用split(”),而应该使用file.nextLine().tocharray();
并将数组类型更改为char数组