Java中的另一个索引越界异常 导入java.util.array; /** * */ /** *@作者abogal6274 * */ 公共类Tictatcoe{ /** *@param args */ 公共静态void main(字符串[]args){ //TODO自动生成的方法存根 TTTBoard(); } 公共静态无效TTTBoard(){ 字符串[][]tttBoard=新字符串[3][3]; 对于(int i=0;i
Java中的另一个索引越界异常 导入java.util.array; /** * */ /** *@作者abogal6274 * */ 公共类Tictatcoe{ /** *@param args */ 公共静态void main(字符串[]args){ //TODO自动生成的方法存根 TTTBoard(); } 公共静态无效TTTBoard(){ 字符串[][]tttBoard=新字符串[3][3]; 对于(int i=0;i,java,indexoutofboundsexception,Java,Indexoutofboundsexception,tttBoard[i-1][3]而言,由于3,无论i,都是超出范围的 如果要初始化整个二维阵列,请使用嵌套循环: import java.util.Arrays; /** * */ /** * @author abogal6274 * */ public class TicTacToe { /** * @param args */ public static void main(String[] args) { // TODO
tttBoard[i-1][3]
而言,由于3,无论i
,都是超出范围的
如果要初始化整个二维阵列,请使用嵌套循环:
import java.util.Arrays;
/**
*
*/
/**
* @author abogal6274
*
*/
public class TicTacToe {
/**
* @param args
*/
public static void main(String[] args) {
// TODO Auto-generated method stub
TTTBoard();
}
public static void TTTBoard(){
String[][] tttBoard = new String[3][3];
for(int i=0; i<=3;i++){
tttBoard[i][3] = "[ ]";
}
System.out.println(Arrays.deepToString(tttBoard));
}
}
Exception in thread "main" java.lang.ArrayIndexOutOfBoundsException: 3
at TicTacToe.TTTBoard(TicTacToe.java:25)
at TicTacToe.main(TicTacToe.java:18)
tttBoard[i-1][3]
由于3
如果要初始化整个二维阵列,请使用嵌套循环:
import java.util.Arrays;
/**
*
*/
/**
* @author abogal6274
*
*/
public class TicTacToe {
/**
* @param args
*/
public static void main(String[] args) {
// TODO Auto-generated method stub
TTTBoard();
}
public static void TTTBoard(){
String[][] tttBoard = new String[3][3];
for(int i=0; i<=3;i++){
tttBoard[i][3] = "[ ]";
}
System.out.println(Arrays.deepToString(tttBoard));
}
}
Exception in thread "main" java.lang.ArrayIndexOutOfBoundsException: 3
at TicTacToe.TTTBoard(TicTacToe.java:25)
at TicTacToe.main(TicTacToe.java:18)
String[][]tttBoard=新字符串[3][3];
对于(inti=1;iString[]tttBoard=newstring[3][3];
对于(int i=1;i您之所以出现此错误,是因为该行tttBoard[i-1][3]=“[]”;
数组是基于零的,如果数组长度为1
,则只能引用元素0
,因此在本例中可以引用0,1,2
我认为您需要的是tttBoard[i-1][2]=“[]”;
您之所以出现此错误,是因为该行tttBoard[i-1][3]=“[]”;
数组是基于零的,如果数组长度为1
,则只能引用元素0
,因此在本例中可以引用0,1,2
我认为您需要的是tttBoard[i-1][2]=“[]”;
例外情况是,您在两个位置访问越界
String[][] tttBoard = new String[3][3];
for(int i=1; i<=3;i++){
tttBoard[i-1][3] = "[ ]";
}
3在上述情况下会导致异常,最大值为2。如果将其更改为tttBoard[i][2]=“[]”;
,则不会出现异常,以避免超出数组绑定。异常是因为您在两个位置访问越界
String[][] tttBoard = new String[3][3];
for(int i=1; i<=3;i++){
tttBoard[i-1][3] = "[ ]";
}
3在上述情况下会导致异常,最大值为2。如果将其更改为tttBoard[i][2]=“[]”;
,则不会出现异常以避免超出数组范围。在java和大多数其他编程语言中,索引计数从0开始
因此,如果您有一个长度5
然后索引将是0,1,2,3,4
如果您有一个长度为N
索引将为0,1,2..N-1
。
因为您有一个类似以下的数组:
tttBoard[i][3] = "[ ]";
因此,索引将是:
String[][] tttBoard = new String[3][3]
在java和大多数其他编程语言中,索引计数从0
开始
因此,如果您有一个长度5
然后索引将是0,1,2,3,4
如果您有一个长度为N
索引将为0,1,2..N-1
。
因为您有一个类似以下的数组:
tttBoard[i][3] = "[ ]";
因此,索引将是:
String[][] tttBoard = new String[3][3]
更改(int i=1;i@rajuGT改变了它,但仍然有剂量的工作…TTTB[I](3)=“[]”;应该是TTBLID[i](2)=“[]”;@宇宙的可能副本也考虑了RAF的建议。访问3×3数组中的第三个索引是无效的。i@rajuGT更改了它,但仍然无效…tttBoard[i][3]=“[]”应该是tttBoard[i] [2]=“[]”在3×3数组中访问第三索引是无效的。@宇宙数组有3行和3列,所以3是无效的列索引。@ SULL,因为数组范围从<代码> 0长度-1 >代码>,这将导致<代码> 2 < /Cord>最高条目。此外,它看起来像Y。您需要为游戏准备数组,这将导致数组中出现6个空条目。请稍候,它会打印出以下内容:[[null,null,[]],[null,null,[]],[null,null,[]]它应该打印到什么地方,但它可以像tic-tac趾板一样垂直吗?好的,我想看看它打印起来像tic-tac趾板吗?@Universe如果你想打印多行数组,不要使用System.out.println(Arrays.deepToString(tttBoard));
。使用嵌套循环并逐个打印数组的元素。@Universe您的数组有3行3列,因此3是无效的列索引。@Universe因为数组范围从0-length-1
,这将导致2
成为最高的条目。此外,看起来您需要准备数组f或者游戏,这将导致数组中出现6个空条目。等待它打印出以下内容:[[null,null,[]],[null,null,[]],[null,null,[]],[null,null,[]]它应该打印到什么地方,但它可以像tic-tac趾板一样垂直吗?好的,我想看看它打印起来像tic-tac趾板吗?@Universe如果你想打印多行数组,不要使用System.out.println(Arrays.deepToString(tttBoard))
。使用嵌套循环并逐个打印数组的元素。Oooo知道我理解谢谢!Oooo知道我理解谢谢!
tttBoard[3][anything] ----> exception
tttBoard[anything][3] -> exception