Warning: file_get_contents(/data/phpspider/zhask/data//catemap/3/arrays/14.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Java 验证二维数组的元素_Java_Arrays_Validation_For Loop_Multidimensional Array - Fatal编程技术网

Java 验证二维数组的元素

Java 验证二维数组的元素,java,arrays,validation,for-loop,multidimensional-array,Java,Arrays,Validation,For Loop,Multidimensional Array,确保元素不超过100或小于0的代码是: 布尔测试=true; 对于(int i=0;i

确保元素不超过100或小于0的代码是:

布尔测试=true;
对于(int i=0;i
除非无论输入是什么,否则答案总是
true

我的输入
数组

{12, 1331, 23, 5, 1, 3},
{22, 23, 231, 21312, 1, 3},
{23, 31, 343, 3432, 1, 3},
{42, 12, 5454, 1212, 3, 9}
如果我输入此否,测试应=false


大学规则意味着我不能使用
break
返回子模块末尾以外的任何位置。

将for循环条件更新为
i
j
,一旦发现无效的nos,将强制循环结束 如果条件为
inArray[i][j]=100

boolean test = true

        for(int i = 0; i < inArray.length && test; i++){
            for(int j = 0; j < inArray[0].length && test; j++){ 
                if(inArray[i][j] <= 1 ||  inArray[i][j] >= 100){    
                    test = false;
                }
            }
        }

        return test;

将for循环条件更新为
i
j
,一旦发现无效的nos,将强制循环结束 如果条件为
inArray[i][j]=100

boolean test = true

        for(int i = 0; i < inArray.length && test; i++){
            for(int j = 0; j < inArray[0].length && test; j++){ 
                if(inArray[i][j] <= 1 ||  inArray[i][j] >= 100){    
                    test = false;
                }
            }
        }

        return test;

这里有三个问题,其中两个是关键问题。首先,如果要迭代每个子数组,请每次测试其长度,而不是数组[0]的长度。其次,整数不能小于2且大于99,因此您的条件
(inArray[i][j]=100)
永远不会触发

然而,这里还有更多的工作要做:如果测试纯粹是为了查看2d数组是否有效,那么不要做超出必要的工作。一旦你发现一个坏元素,你就可以停下来。现在,我们可以通过在
中添加一个检查来检查
条件。例如,我们可以将您的变量重命名为
valid
(因为您应该根据变量所表示的内容命名变量),然后我们可以将您的外循环更新为
(int i=0;valid&&i
,并在内循环中使用相应的
valid&&……
,但我们不会这样做。这段代码“做一件事”(即它对任何数组“测试元素有效性”),而“做一件事”的代码应该在它自己的方法中,方法名描述它所做的事情。这使得“不做任何我们不需要做的工作”变得越来越容易:当我们知道我们已经做了足够的工作来产生一个答案时,我们就退出这个函数

让我们这样做:

//第一个修复:此代码“不执行soemthing”。作为一种方法。
公共布尔testForValidContent(int[]arr){
//我们不需要变量来跟踪事物:因为我们
//返回一个值,我们可以简单地返回正确的值
//我们回来的时候。
对于(int i=0;i
这里有三个问题,其中两个是关键问题。首先,如果要迭代每个子数组,请每次测试其长度,而不是数组[0]的长度。其次,整数不能小于2且大于99,因此您的条件
(inArray[i][j]=100)
永远不会触发

然而,这里还有更多的工作要做:如果测试纯粹是为了查看2d数组是否有效,那么不要做超出必要的工作。一旦你发现一个坏元素,你就可以停下来。现在,我们可以通过在
中添加一个检查来检查
条件。例如,我们可以将您的变量重命名为
valid
(因为您应该根据变量所表示的内容命名变量),然后我们可以将您的外循环更新为
(int i=0;valid&&i
,并在内循环中使用相应的
valid&&……
,但我们不会这样做。这段代码“做一件事”(即它对任何数组“测试元素有效性”),而“做一件事”的代码应该在它自己的方法中,方法名描述它所做的事情。这使得“不做任何我们不需要做的工作”变得越来越容易:当我们知道我们已经做了足够的工作来产生一个答案时,我们就退出这个函数

让我们这样做:

//第一个修复:此代码“不执行soemthing”。作为一种方法。
公共布尔testForValidContent(int[]arr){
//我们不需要变量来跟踪事物:因为我们
//返回一个值,我们可以简单地返回正确的值
//我们回来的时候。
对于(int i=0;i
需要注意的一点是:查看内部for循环。您迭代的是哪个数组,而您测试的是哪个数组的长度?然后查看您的
if
语句。密切地。
&&
是什么意思?既然我正在测试最小值>1和最大值<100的边界,那么最好的方法不是测试相反边界以确保它不会循环内边界值吗?这就是我的逻辑anyway@DaffyFarm这不是你要测试的。您正在进行相反的测试。当您测试
(a&&b)
时,您正在测试a和b是否同时为真,并且没有同时小于2和大于99的整数。需要注意的一点是:查看内部for循环。您迭代的是哪个数组,而您测试的是哪个数组的长度?然后查看您的
if
语句。密切地。什么是
&&
意思?自从我