查看2D数组中的元素

时间:2012-11-09 15:14:07

标签: java arrays multidimensional-array

我正在使用2D数组,我想查看"左上角" "顶部"和#34;右上角"最后一行中最小元素的。我有一个有效的代码,但是它显示了行中每个元素的所有方向,而不仅仅是最小的元素。有人可以帮忙吗?这是我的代码:

for (int y = array.length-1; y == array.length-1; y--)
{
    for (int x = 0; x < array[y].length; x++)
    {
        int lowest = array[y][0];  
        for (x = 0; x < array[y].length; x++)
        {
            if (array[y][x] <= lowest)
                lowest = array[y][x];

            //if element is on left
            if (x == 0)
            {
                up = array[y-1][x];
                upRight = array[y-1][x+1];
                upLeft = 0;
            }

            //if element is on right
            else if (x == array[0].length - 1)
            {
                upLeft = array[y-1][x-1];
                up = array[y-1][x];
                upRight = 0;
            }

            //if element is anywhere else
            else
            {
                upLeft = array[y-1][x-1];
                up = array[y-1][x];
                upRight = array[y-1][x+1];
            }
        }
    }

}

1 个答案:

答案 0 :(得分:1)

一些观察结果。

现在看来你有2个嵌套for循环,你在整个数组上进行迭代。根据您的描述,听起来似乎没有必要,您只需搜索array[array.length - 1]以获得最低价值。

专注于编写一个单独的步骤(可能是它自己的方法),它将在最后一行找到最低值的索引。

你几乎有找到左上角,右上角和右上角的逻辑。您只需要根据最后一行中最低值的索引查看array[array.length - 2]中的元素。


<强>更新

您在问题中提到您的代码“显示行中每个元素的所有方向”。您没有包含任何显示结果的代码,但是从下面的评论中可以看出您的问题如下:

设置upLeftupupRight的代码在搜索最低值的循环。即你有:

for (x = 0; x < array[y].length; x++)
        {
            if (array[y][x] <= lowest)
                lowest = array[y][x];

            //if element is on left
            if (x == 0)

所以这意味着它会对行中的每个元素发生。

你可能想做的是让你的循环找到最低元素,并记住它的索引:

for (x = 0; x < array[y].length; x++)
{
    if (array[y][x] <= lowest) {
        lowest = array[y][x];
        indexOfLowest = x;
    }
}

然后 后,在内部循环之外,使用找到的最低元素的索引设置upLeftupupRight

//if element is on left
if (indexOfLowest == 0)