如何修复越界异常错误?

阿隆·拉特曼

我在考试中写了一个回溯代码,在单元格和计数路径之间移动,条件是下一个单元格是 i+k 或 j+k 或 ik 或 jk。即使由于我试图阻止它这样做,代码仍然以某种方式超出范围。

我尝试通过在“if”条件的检查有效移动中添加 +1 来添加修复代码。

public class Test3
{
    public static int howManyPaths(int [][] mat)
    {
        return howManyPaths(mat,0,0,0);
    }

    private static int howManyPaths(int [][] mat, int i, int j, int count)
    {
        if(i == mat.length-1){return count;}
        if(j == mat[i].length-1){return howManyPaths(mat,i+1,0,count);}
        count = pathCount(mat,i,j);
        return howManyPaths(mat,i,j+1,count);
    }

    private static int pathCount(int [][] mat, int i, int j)
    {
        int k = mat[i][j];        
        if(i < mat.length-1 && mat[i][j] == mat[i+k][j] && i+k < mat.length-1){
            return 1 + pathCount(mat,i+k,j);}

        if(j < mat[i].length-1 && mat[i][j]==mat[i][j+k] && j+k < mat[i].length-1){
            return 1 + pathCount(mat,i,j+k);}

        if(i > 0 && mat[i][j]==mat[i-k][j] && i-k > 0){
            return 1 + pathCount(mat,i-k,j);}

        if(j > 0 && mat[i][j]==mat[i][j-k] && j-k > 0){
            return 1 + pathCount(mat,i,j-k);}
        return 1;
    }
}

预期是有多少路径和实际结果“越界”。

使用 fixet 代码编辑仍然无法正常工作

木基09

在您的代码中,

 if(i < mat.length-1 && mat[i][j] == mat[i+k][j]){
        return 1 + pathCount(mat,i+k,j);}

如果i+k>=mat.length 会是什么?或者,

if(j < mat[i].length-1 && mat[i][j]==mat[i][j+k]+1){
        return 1 + pathCount(mat,i,j+k);

如果j+k>=mat[i].length 会是什么?或者,

if(i > 0 && mat[i][j]==mat[i-k][j]){
        return 1 + pathCount(mat,i-k,j);}

如果ik<0 会怎样?或者,

if(j > 0 && mat[i][j]==mat[i][j-k]){
        return 1 + pathCount(mat,i,j-k);}

如果jk<0 会怎样?

处理这些情况也是如此。看,i>0,仍然ik可以小于或等于0这就是你的情况的诀窍。

希望你现在明白了。

编辑:在您编辑代码后,仍然会遇到与您访问索引相同的异常,然后检查索引是否有效。

不是这个:

if(i < mat.length-1 && mat[i][j] == mat[i+k][j] && i+k < mat.length-1)

相反,你必须写:

if(i < mat.length-1 && i+k < mat.length-1 && mat[i][j] == mat[i+k][j])

对其他人也一样。

通过这样做,您将能够摆脱java.lang.ArrayIndexOutOfBoundsException

本文收集自互联网,转载请注明来源。

如有侵权,请联系[email protected] 删除。

编辑于
0

我来说两句

0条评论
登录后参与评论

相关文章

来自分类Dev

错误越界异常

来自分类Dev

如何在循环中修复“下标越界”错误

来自分类Dev

在 for 循环中使用 LINQ Where 时如何修复索引越界错误?

来自分类Dev

如何解决越界错误?

来自分类Dev

数组索引越界异常如何克服

来自分类Dev

如何修复*** URI :: InvalidComponentError异常:错误的密码组件?

来自分类Dev

如何修复while循环停止+未处理的异常错误

来自分类Dev

如何解决Java越界编码错误?

来自分类Dev

如何解决Jsoup数组索引越界异常?

来自分类Dev

如何使用 std::transform 抛出越界写入异常?

来自分类Dev

iOS-越界异常

来自分类Dev

数组越界异常:100

来自分类Dev

TreeNodes的Java越界异常

来自分类Dev

java魔方越界异常

来自分类Dev

如何修复Google App脚本错误异常:数据存储错误(第1行,文件“代码”)?

来自分类Dev

如何修复Django ImproperlyConfigured异常?

来自分类Dev

如何修复空指针异常?

来自分类Dev

如何修复此 sql 异常

来自分类Dev

如何修复 SQLite 约束异常?

来自分类Dev

如果csv文件为空,如何停止数组越界错误?

来自分类Dev

如何修复语言错误

来自分类Dev

如何修复distcc错误

来自分类Dev

如何修复NullPointerException错误?

来自分类Dev

如何修复此段错误?

来自分类Dev

如何修复语言错误

来自分类Dev

如何修复NullPointerException错误

来自分类Dev

如何修复1064错误

来自分类Dev

如何修复错误的更新?

来自分类Dev

如何修复括号错误