Java 查看二维阵列中的元素
我正在使用2D数组,我想查看最后一行中最小元素的“左上”“右上”和“左上”元素。我有一个代码可以工作,但是它显示了行中每个元素的所有方向,而不仅仅是最小的方向。有人能帮忙吗?这是我的代码:Java 查看二维阵列中的元素,java,arrays,multidimensional-array,Java,Arrays,Multidimensional Array,我正在使用2D数组,我想查看最后一行中最小元素的“左上”“右上”和“左上”元素。我有一个代码可以工作,但是它显示了行中每个元素的所有方向,而不仅仅是最小的方向。有人能帮忙吗?这是我的代码: 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 (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];
}
}
}
for(int y=array.length-1;y==array.length-1;y--)
{
对于(int x=0;x 如果(数组[y][x]一对观测值
目前,您似乎有两个嵌套的for
循环,您正在迭代整个数组。从您的描述来看,这似乎不是必需的,您可以搜索数组[array.length-1]
以获得最低值
专注于编写一个单独的步骤(可能是它自己的方法),该步骤将在最后一行中找到最低值的索引
查找左上角、右上角和右上角的逻辑基本正确。您只需根据最后一行中最低值的索引查看array[array.length-2]
中的元素即可
更新:
您在问题中提到,您的代码“显示行中每个元素的所有方向”。您没有包含任何显示结果的代码,但从您下面的评论来看,您的问题似乎如下所示:
设置upLeft
、up
和直立
的代码位于搜索最低值的循环中。即,您有:
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)
等等。显示数组中的数据示例…如果我有一个数组:{1 3 4 5},{3 7 8 2},{4 5 2},那么“top”etcOk是什么意思最后一行中的最小值是2,upLeft应该是7,up应该是8,vertight应该是2。如果upLeft或vertight超出范围,它会将其中一个设置为0。我对整个数组使用嵌套for循环的原因是因为我需要找到“上面”的最小值最后一个元素,然后执行相同的操作,直到到达数组的顶部。我没有提到这一点,但这不是我在momentOK集中讨论的一个步骤,我已经用更多的建议更新了答案。希望它为您指明了正确的方向。如果变量indexOfLowest在内部循环中,但其余代码在外部内部循环indexOfLowest=x;如何设置为if(indexOfLowest==0)?您好。既然您已经将答案标记为已接受,您现在就知道了吗?如果没有,建议在您当前执行int-lowest=array[y][0];
之后,我声明并初始化int-indexOfLowest=0
for (x = 0; x < array[y].length; x++)
{
if (array[y][x] <= lowest) {
lowest = array[y][x];
indexOfLowest = x;
}
}
//if element is on left
if (indexOfLowest == 0)