搜索多维数组中的特定行

时间:2010-12-13 03:06:14

标签: java arrays multidimensional-array nested-loops

我是java编程的新手,我不能在我的一个任务中绕过最后一个问题。

我们被告知要创建一个静态方法来搜索二维数组并将二维数组的数字与输入数字进行比较......就像这样:

private static int [] searchArray(int [] [] num,int N){

现在,我们返回的部分是一个新的一维数组,告诉每行中第一个数字的索引大于参数变量N.如果没有数字大于N,那么a -1为数组的该位置返回。

例如,一个名为“A”的多维数组:

4 5 6

8 3 1

7 8 9

2 0 4

如果我们使用这个方法并且做了searchArray(A,5),答案就是“{2,0,0,-1)”

2 个答案:

答案 0 :(得分:1)

Here是关于Java 2D数组的非常好的解释

    int num[][] = {{4,5,6},{8,3,1},{7,8,9}};
    int N = 5;
    int result[] = new int[num.length];
    for(int i=0; i<num.length; i++){
        result[i] = -1;
        for(int j=0; j<num[0].length; j++){
            if( N < num[i][j] ){
                result[i] = j;
                break;
            }
        }
    }

    for(int i=0; i<result.length; i++){
        System.out.println(result[i]);
    }

第一个for循环(内部带有for的循环)从上到下遍历2D数组 从左到右的方向。这是,首先它与4然后5,6,8,3,1,7,8,9。

首先创建结果数组。长度取决于num的行数。 如果没有大于N的数字,result [i]设置为-1。 如果找到大于N的数字,则保存列索引result [i] = j并使用break来退出for循环,因为我们只想找到大于N的第一个数字的索引。

最后一个for循环只打印结果。

答案 1 :(得分:0)

通常在使用多维数组时,您将使用嵌套的for循环:

for(int i = 0; i < outerArray.length; i++){
   //this loop searches through each row
   for(int j = 0; j < innerArrays.length; j++) {
     //this loop searches through each column in a given row
     //do your logic code here
   }
}

我不会给你更多的基本结构,因为你需要理解这个问题;你将来会遇到很多这样的结构,但这应该让你开始。