在2D数组中搜索java中的一系列值

时间:2013-11-03 21:45:58

标签: java arrays search multidimensional-array

我有一个2 ^ n大小的int数组,我想检查一个元素是否存在大于0.如果元素存在,我想将数组除以4并检查找到的元素的坐标是否是在阵列的第1,第2,第3或第4象限。

例如,从逻辑上讲,如果元素存在于第一象限中,它将看起来像这样:

如果array [] []> 0&&该坐标的行在0-(grid.length / 2-1)&&的范围内。该坐标的列在0-(grid.length / 2-1)范围内,然后做一些事情。

我真的不确定如何检查找到的元素的行和列索引,并存储要在if语句中使用的坐标。救命啊!

3 个答案:

答案 0 :(得分:1)

你的代码应该是这样的

for(int i = 0; i < array.length; i++){
    for(int j; j < array[i].length; j++){
        if(array[i][j] > 0){
           do some thing
         }
     }
}

答案 1 :(得分:0)

你正在使用嵌套的for循环,对吗?并且,我猜,你有一个像返回找到的元素的函数?所以你需要一个函数来返回找到的元素它的坐标 - 或者只是坐标,如果数组在这个函数之外可用的话。

像这样(伪代码):

for i from 0 to max X
    for j from 0 to max Y
        if array[i][j] > 0
            return (array[i][j], i, j) # A tuple, or whatever -
                                       # just some data structure for
                                       # storing multiple things

答案 2 :(得分:0)

据我理解你的问题,你有以下几种情况:给定0之间的整数k,N(表示单个dim。数组中元素的位置)找到2-d数组中相应单元格的坐标,即找到x(i,j),其中x有R行和C列。

Example (rows R=3 and Columns C=4)

0 1 2  3 
4 5 6  7
8 9 10 11

Given k=6  Then i=1, j=2
Given k=11 Then i=2, j=3

Given k, you can find i, j as follows:

i=Int(k/c) //Row number (0-based)

j=k%c // Column number - (0-based) obtained by the remainder of dividing k by c