2D数组的验证元素

问题描述 投票:0回答:2

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

        boolean test = true

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

                }
            }
        }

        return test;

除非输入是什么,答案总是对的

我的输入array

                {12, 1331, 23, 5, 1, 3},
                {22, 23, 231, 21312, 1, 3},
                {23, 31, 343, 3432, 1, 3},
                {42, 12, 5454, 1212, 3, 9}

如果输入此否,测试应该=假?

大学规则意味着我不能在子模块末尾以外的任何地方使用break;return

java arrays validation for-loop multidimensional-array
2个回答
0
投票

将您的循环条件更新为i < inArray.length && testj < inArray[0].length && test,这将在发现无效的编号后强制结束循环而您的if条件为inArray[i][j] <= 1 || 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;

您也可以跳过if块,

boolean test = true

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

        return test;

0
投票

这是因为它基于最后一个元素的条件为'9'的条件返回,所以您总是会得到true,您可以做一件事

        boolean test = true
        int count=0;

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

                }
            }
        }
        if(count > 0){
          test=false;
        }
return test;
© www.soinside.com 2019 - 2024. All rights reserved.