【发布时间】:2015-04-25 08:07:23
【问题描述】:
我试图在我的二维数组中找到最长的一系列水平 O,然后打印出最长的路径。我没有看到我的逻辑错误,我一直在阅读这个但没有看到我的错误。我在这里被困了大约 2 天。我在想我的查找最大长度语句可能有问题?我在第 58 行和第 31 行遇到了越界错误。对于我做错的任何建议将不胜感激。
public class game {
/**
* @param args the command line arguments
*/
public static void main(String[] args) {
// TODO code application logic here
Scanner kbd = new Scanner(System.in);
System.out.println("ENTER A SINGLE INTEGER: ");
int n = kbd.nextInt();
char[][] mazeValue = new char[n][n];
System.out.println("ENTER A PATH: ");
for(int i = 0; i < mazeValue.length; i++ ){
for(int j = 0; j< mazeValue[i].length; j++){
mazeValue[i][j]= kbd.next().charAt(0);
}
}
printMaze(mazeValue);
horizontalPath(mazeValue);
}
public static void printMaze(char mazeValue[][])
{
System.out.println("MAZE");
for(int i = 0; i < mazeValue.length; i ++)
{
for (int j = 0; j < mazeValue[i].length; j++)
{
System.out.printf("%4c",mazeValue[i][j]);
}
System.out.printf("\n");
}
}
public static void horizontalPath(char mazeValue[][])
{
int horizontalPath=0;
int maxHorizontalCount=0;
int i;
int j;
for(i= 0; i<mazeValue.length; i++){
for(j = 0; j<mazeValue[i].length; j++){
if(mazeValue[i][j]== 'o'){
horizontalPath = horizontalPath + mazeValue[i][j];
}
}
if(horizontalPath < mazeValue[i][j])
maxHorizontalCount = mazeValue[i][j];
}
System.out.printf("Longest horizontal path row %d length %d",i,maxHorizontalCount);
}
}
【问题讨论】:
-
您在这里看到任何行号吗?请指出这些具体发生在哪里。
-
函数调用:horizontalPath(); 31
-
第二个if语句:if(horizontalPath
-
因为在
if(horizontalPath < mazeValue[i][j])行上,您在第二个for 循环之外,所以j = mazeValue[i].length;在数组之外 -
看看我是怎么做到的,但是计数工作不正常,所以我只是尝试将它移到第一个 if 语句之外。知道为什么最长行的长度一直为 0 吗??