繁体   English   中英

搜索二维int [] []数组?

[英]searching a 2D int[][] array?

如何在2D数组中搜索特定数字(1)? 我以为下面的代码可以做到这一点,但是当我用[4] [4]声明它时,显然我正在寻找特定的位置。

    boolean undirectedCircuit (int [][] graph)
{
    //graph = graph1(graph1(null));

    int edgeCounter = 0;

    for (int edge = 0; edge < graph.length; edge++)
    {
        /* SET FOR WHEN 1s are found in array: edgeCounter++;*/
        if(graph[4][4] == '1')
        {
            edgeCounter++;
            System.out.println("edgeCounter found '1' " + edgeCounter + "times");
        }
    }

    if (edgeCounter % 2 == 0)
    {
        System.out.println("This is a circuit!");
        //return true;
    }
    else System.out.println("This is not a circuit!!");
    return false;
    }

public void go ()
{
    graph1 = new int[][] //This line is complained about.
            {
            {0,1,1,1,0},
            {1,0,0,0,1},
            {1,0,0,1,0},
            {1,0,1,0,1},
            {0,1,0,1,0}
            };

    undirectedCircuit(graph1); //This is complained about.
} 

这是我学校分配的作业的一部分,只是指针会很棒。 谢谢!

您可以尝试执行类似的操作,在其中遍历数组的两个维度并检查当前位置,而不是4,4

for (int x = 0; x < graph.length; x++)
        {
            for (int y = 0; y < graph[x].length; y++)
            {
                /* SET FOR WHEN 1s are found in array: edgeCounter++;*/
                if (graph[x][y] == 1)
                {
                    edgeCounter++;
                    System.out.println("edgeCounter found '1' " + edgeCounter + "times");
                }
            }
        }

此行有两种错误的方式:

 if(graph[4][4] == '1')
  1. '1'周围的引号使它成为char文字。 由于您的数组包含int ,因此您需要删除引号并只写1

  2. graph[4][4]将始终检查数组中与您说的值相同的值。 具体来说,它将始终访问2d数组的第五个数组中的第五个值。 每当您在代码中写入数字时,它们都是常量:数字4在程序执行期间永远不会改变,因此您将一遍又一遍地使用4作为索引,每次这样做都访问第五个元素。

为了访问数组中的每个元素,您可以像这样遍历它:

for (int n = 0; n < array.length; n ++)
{
    array[n]; //access the nth element of the array
}

在这种情况下, n与您的edge变量相同。

但是,由于您使用的是2d数组,因此这些元素本身就是数组! 因此,您需要另一个循环:

//array is a 2d array...

for (int n = 0; n < array.length; n ++)
{
    //...so its elements are 1d arrays
    for (int m = 0; m < array[n].length; m ++)
    {
        array[m][n]; //here we have a specific object in our 2d array.
    }
}

我们使用变量作为索引,以便它们可以在循环中更改并访问数组中的不同值。 希望这可以帮助!

暂无
暂无

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM