簡體   English   中英

在Java的2D數組中搜索值的范圍

[英]Searching a 2D array for a range of values in java

我有一個2 ^ n大小的int數組,我想檢查是否存在一個大於0的元素。如果該元素存在,我想將該數組除以4,並檢查找到的元素的坐標是否在第1個,數組的第二,第三或第四象限。

例如,從邏輯上講,如果元素在第一象限中,它將看起來像這樣:

如果array [] []> 0 &&,則該坐標的行在0-(grid.length / 2-1)范圍內&&列的坐標在0-(grid.length / 2-1)范圍內然后做點什么。

我真的不確定如何檢查找到的元素的行和列的索引,以及將那些坐標存儲在我的i​​f語句中。 救命!

您的代碼應如下所示

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

您正在使用嵌套的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

據我了解您的問題,您遇到以下情況:給定一個介於0和N之間的整數k,N(代表一個尺寸數組中元素的位置)在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

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM