【问题标题】:Searching specific rows in a multi-dimensional array在多维数组中搜索特定行
【发布时间】:2011-05-24 10:55:55
【问题描述】:

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

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

private static 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)”

【问题讨论】:

    标签: java arrays multidimensional-array nested-loops


    【解决方案1】:

    通常在使用多维数组时,您将使用嵌套的 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
       }
    }
    

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

    【讨论】:

    • 我明白了,因为我们的大部分作业都是关于遍历多维数组并替换值、将它们相乘等,但我不明白的主要部分是如何处理整个“行”的想法。我是否需要在已经给出的 2 中创建另一个嵌套的 for 语句,以使其在每一行之后执行某些操作或什么?
    • 对行的操作将进入外部 for 循环,该循环遍历行。放置在那里的逻辑每行只调用一次。
    • @Cameron:Raskolnikov 基本上已经为您提供了解决问题的大部分方法。正如他在上面的评论中所说,第一个(外部)循环遍历行,而第二个(内部)循环遍历从第一个循环中选择的行中的项目。您现在需要将比较逻辑添加到代码中。
    【解决方案2】:

    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 的那个)从上到下遍历二维数组 在从左到右的方向。这是,首先它与 4 一起,然后是 5,6,8,3,1,7,8,9。

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

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

    【讨论】:

      猜你喜欢
      • 2019-09-13
      • 2022-01-10
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 2011-12-27
      • 2022-01-03
      • 2016-09-19
      相关资源
      最近更新 更多