我试图在我的2d阵列中找到最长的水平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);
}
}
答案 0 :(得分:0)
我猜您在代码之前有一些导入会抵消行号,而您的问题在上面代码的第47行:
if(horizontalPath < mazeValue[i][j])
maxHorizontalCount = mazeValue[i][j];
此块在你的for循环中
另请注意,您实际上并未计算任何内容的最大值,只需将maxHorizontalCount设置为[i] [j]处的值即可。要计算最大值,您应该执行类似
的操作maxHorizontalCount = maxHorizontalCount > mazeValue[i][j] ? maxHorizontalCount : mazeValue[i][j];
或者当然使用Math.max()。