我有一个2D数组作为网格。
HikariPool-1 - Failed to validate connection org.mariadb.jdbc.MariaDbConnection@31124a47 (Connection.setNetworkTimeout cannot be called on a closed connection)
at com.zaxxer.hikari.pool.PoolBase.isConnectionAlive(PoolBase.java:184)
at com.zaxxer.hikari.pool.HikariPool.getConnection(HikariPool.java:172)
at com.zaxxer.hikari.pool.HikariPool.getConnection(HikariPool.java:146)
at com.zaxxer.hikari.HikariDataSource.getConnection(HikariDataSource.java:85)
at play.api.db.DefaultDatabase.getConnection(Databases.scala:142)
at play.api.db.DefaultDatabase.withConnection(Databases.scala:152)
at play.api.db.DefaultDatabase.withConnection(Databases.scala:148)
如何按顺序搜索网格,如(0,0),(1,0),(2,0),(3,0),(4,0)然后(0,1),( 1,1),(2,1)...没有得到任何数组超出范围的例外。
我是编程新手,我无法理解如何做到这一点。
答案 0 :(得分:2)
你知道自己的长度,现在使用for
循环圈出数组。
for (int i = 0;i<5;i++){
for (int j = 0;i<5;i++){
int myInt = grid[i][j];
//do something with my int
}
}
要在运行时获取长度,您可以
int lengthX = grid.length; //length of first array
int lengthY = 0;
if ( lengthX>0){ //this avoids an IndexOutOFBoundsException if you don't know if the array is already initialized yet.
lengthY = grid[0].length; //length of "nested" array
}
然后使用for
和lengthX
进行lengthY
循环。
答案 1 :(得分:0)
您需要两个嵌套循环才能访问数组的两个维度:
int grid[][] = new int[5][5];
for(int i = 0; i < 5; i++ ) {
for(int j = 0; j < 5; j++ ) {
int value = grid[i][j];
}
}
答案 2 :(得分:0)
使用2个forloops,如下例所示:
for(int i = 0; i < 5; i++){
for(int j = 0; j < 5; j++){
System.out.println(grid[i][j]);
}
}
另外我建议在初始化数组时将其写成:
int[][] grid = new int[5][5]; // note the double brackets are after int and not grid
答案 3 :(得分:0)
试试这个:
for(int i=0;i<5;i++)
{
for(int j=0;j<5;j++)
{
System.out.println(grid[j][i]);
}
}
答案 4 :(得分:0)
此代码(与其他答案一样)使用两个for循环。 但它确实添加了一些边缘情况的处理
B2