当前位置: 首页 > 知识库问答 >
问题:

(Java)异常执行,即使它不应该

农诚
2023-03-14

返回位于给定的基于一的行和列索引处的该矩阵的条目。如果行或列不是1或2,则引发异常。

public double get(int row, int col){
   if (row != 1 || row != 2){
      throw IndexOutOfBoundsException("Row not valid");
   }

   if (col != 1 || col != 2){
      throw IndexOutOfBoundException("Column not valid");
   }

   return data[row - 1][col - 1];
}

这是我的方法的代码,但即使我使用参数row=1和col=2调用该方法;它显示了IndexOutOfBoundsException。有没有办法解决这个问题?

共有2个答案

黄俊誉
2023-03-14

你还应该告诉我们什么是数据。也许错误来自最后一行?

拓拔君博
2023-03-14

假设矩阵data足够大,尝试使用

public double get(int row, int col) {
   if (row != 1 && row != 2) {
      throw new IndexOutOfBoundsException("Row not valid");
   }
   if (col != 1 && col != 2) {
      throw new IndexOutOfBoundException("Column not valid");
   }
   return data[row - 1][col - 1];
}

而不是链接一系列的条件,你也可以考虑为每个有效的列和行定义一个集合:

private static final Set<Integer> VALID_ROWS_TO_GET = Set.of(1, 2);
private static final Set<Integer> VALID_COLS_TO_GET = Set.of(1, 2);

...

public double get(int row, int col) {
    if (!VALID_ROWS_TO_GET.contains(row)) {
        throw new IndexOutOfBoundsException("Row not valid");
    }
    if (!VALID_COLS_TO_GET.contains(col)) {
        throw new IndexOutOfBoundsException("Column not valid");
    }
    return data[row - 1][col - 1];
}

 类似资料:
  • 返回位于给定的基于一的行和列索引处的该矩阵的条目。如果行或列不是1或2,则引发异常。 这是我的方法的代码,但即使我使用参数row=1和col=2调用该方法;它显示了IndexOutOfBoundsException。有没有办法解决这个问题?

  • 问题内容: 我正在运行一个简单的Calculator应用程序来学习Java的异常处理。我设置了两个要处理的异常:InputMismatchException和ArithmeticException,用于除以零。 ArithmeticException得到处理,并且do-while循环继续。但是在捕获InputMismatchException之后,执行将终止而不是继续循环。 码: 输出: 预期:在

  • 我编写了一个简单的注释和一个AnnotationProcessor来处理注释。 注释只有一个值:它应该是现有接口(带有包)的名称。 注释处理器应该检索注释的值,检索接口的类对象,最后应该打印接口中声明的所有方法。 例:这是我的注解 这是带注释的类: 我的处理器看起来像 现在,如果我配置一个像java.lang.CharSequence这样的接口作为MyAnnoation的接口名称,这个工作原理很好

  • 我安装了Maven 3.2.5并在我的项目目录中执行了。显示以下错误: 插件org.apache.maven.plugins:maven-resources-plugin:2.6或其依赖项无法解析:无法读取org.apache.maven的工件描述符。plugins:maven-resources-plugin:jar:2.6:无法将工件org.apache.maven.plugins:maven

  • 所以我用这个mock(potatoConsumer)订阅,rxJava调用了“accept”,mockito将其标记为交互,但mockito认为这个交互不是我所期望的,为什么? 图书馆的版本使用了她: 一些由powermock模拟的字段在“验证”时失败,但由mockito模拟的字段不是 Mockito不能模拟未打开的字段,没有,但Mockito与Powermock maker inline冲突 P

  • 问题内容: 我们知道捕获异常非常昂贵。但是,即使从不抛出异常,在Java中使用try-catch块是否也很昂贵? 问题答案: 几乎没有任何花销。代码的元数据不是在运行时进行设置,而是在编译时进行结构化,这样,当引发异常时,它现在执行相对昂贵的操作,即遍历堆栈并查看是否存在任何可捕获此异常的块。例外。从外行的角度来看,它可能也是自由的。它实际上是在抛出导致你付出代价的异常-但是,除非你抛出数百或数千