4

我是 Java 编程的新手,我无法在我的一项作业中解决最后一个问题。

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

私有静态 int[] searchArray(int[][] num, int N){

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

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

4 5 6

8 3 1

7 8 9

2 0 4

如果我们使用此方法并执行 searchArray(A, 5),则答案将是“{2,0,0,-1)”

4

2 回答 2

1

是关于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 循环只打印结果。

于 2010-12-13T03:28:35.053 回答
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
   }
}

我不会给你更多的基本结构,因为你需要理解这个问题;将来您会经常遇到此类结构,但这应该可以帮助您入门。

于 2010-12-13T03:14:29.123 回答