【问题标题】:How to validate 2D array values in Java如何在 Java 中验证二维数组值
【发布时间】:2021-10-02 02:10:44
【问题描述】:

我是 Java 新手,难以对二维整数数组执行输入验证。 我正在尝试检查以确定数组是否添加了任何负整数,如果是,则抛出异常。

我试过的是:

int [][] myArray = {
        {2,-2,2,2},
        {3,3,3,3}};

for(int i = 0; i < myArray.length; i++){
            for(int j = 0; j < myArray[i].length; j++){
                 if(myArray[1] < 0 ){
                     throw new IllegalArgumentException("Negative integer.");
            }
        }

但是,很多人可能会从查看我的代码中了解到,我得到了错误

Incompatible types: int[] cannot be converted to int

有没有办法以某种方式执行输入验证以检查非正整数?到目前为止,我还没有想出一个好的解决方案或解决方法。

【问题讨论】:

  • 在java中多维数组是数组的数组。所以 myArray[1] 的值是一个 int 数组,而不是一个特定的 int 值。更具体地说,它是您示例中的数组{3,3,3,3}。要让它工作,你需要使用myArray[i][j]
  • 您有两个嵌套循环,嵌套循环内的代码根本无法使用 任何一个 循环变量。这应该是一个危险信号。

标签: java validation


【解决方案1】:

你很亲密?

由于您需要提供数字的确切“坐标”,您只需将myArray[1] 替换为myArray[i][j]

int [][] myArray = {
        {2,-2,2,2},
        {3,3,3,3}};

for(int i = 0; i < myArray.length; i++){
            for(int j = 0; j < myArray[i].length; j++){
                 if(myArray[i][j] < 0 ){
                     throw new IllegalArgumentException("Negative integer.");
            }
        }

【讨论】:

  • 感谢您的澄清!我一直坚持以“行”和“列”的心态将事物可视化,并认为我可以将“行”作为 myArray[rows] 访问,而不是像您展示的那样访问整个结构 myArrays[rowIndex][columnIndex] 这是有道理的。
  • 你可以一次访问整行,但是你会得到一个Integer[]而不是一个Integer,而且Integer[]不能和数字比较,这就是错误所在。您确实在问题中将它们作为整行访问,只是比较不正确?
猜你喜欢
  • 1970-01-01
  • 1970-01-01
  • 2020-03-19
  • 1970-01-01
  • 2016-05-29
  • 2020-01-08
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
相关资源
最近更新 更多