首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >在数组中搜索特定索引处的值

在数组中搜索特定索引处的值
EN

Stack Overflow用户
提问于 2014-02-26 12:47:57
回答 2查看 62关注 0票数 0

我声明了几个数组,在这些数组中我们有以下值:

代码语言:javascript
复制
{0, 1, 1, 0, 0}
{1, 0, 0, 0, 1}
{0, 1, 0, 0, 0}

我有多个具有相同数量值的数组。

对于我的Android应用程序,我将有一组按钮。

如果按下按钮1,我想知道位置1、3和5中是否有1,以及有多少个。如果按下了按钮2,我想知道位置1、2、3和4中是否有1,以及有多少个。

我搜索的所有内容都显示了如何找出数组中是否存在1,但不是在特定位置。有什么建议/帮助吗?

如果你想阅读我正在尝试实现的细节,尽管我应该能够通过对上述问题的有用解决方案弄清楚所有事情:

我有64个按钮排列在一个8x8的网格中,代表人类躯干的各个部分,我的13个数组中有64个数字(0或1)。该数组识别在上述躯干部分之一中是否存在器官(如果器官存在,则为1;如果不存在,则为0)。

我想按下一个按钮,然后在所有数组中搜索该位置的1。如果我按下按钮35,我想知道肝脏是否在那个部分。

我的最终输出将告诉用户器官可能在该部分中所占的百分比。如果一个部分包含器官的一部分,它将是1,然后除以包含该器官的部分的总数。

如果你已经读到这里,我从正确的角度来解决这个问题,你还有其他想法吗?

EN

回答 2

Stack Overflow用户

发布于 2014-02-26 13:01:16

我建议您可能希望使用二进制函数来完成此任务。下面是一个示例,当第一次按下按钮2时,我们将数组声明为列而不是行

代码语言:javascript
复制
    byte col1 = 8; // equivalent of 0 1 0 0 0
    byte col2 = 1; //               0 0 0 0 1
    byte col3 = 2; //               0 0 0 1 0
    // this makes your original array look like
    // 0 0 0
    // 1 0 0
    // 0 0 0
    // 0 0 1
    // 0 1 0
    System.out.println(bitcount(col1) + bitcount(col2) + bitcount(col3));

    /* to set or unset bytes
    my_byte = my_byte | (1 << pos);
    To un-set a bit:
    my_byte = my_byte & ~(1 << pos);
    */
    }
static private int bitcount(byte n)  {
       int count = 0 ;
       while (n != 0)  {
          count++ ;
          n &= (n - 1) ;
       }
       return count ;
}

然后,我们通过对要计数的每一列的位进行计数来进行计数

Construction an logical expression which will count bits in a byte

票数 1
EN

Stack Overflow用户

发布于 2014-02-26 13:21:09

根据你在问题中的描述,你可以这样做:

假设你有一个数组:

代码语言:javascript
复制
int[][] numArray = {{0, 1, 1, 0, 0},
                    {1, 0, 0, 0, 1},
                    {0, 1, 0, 0, 0}};

你只需要有这样的方法:

代码语言:javascript
复制
int countOne(int[] num){  
    int count=0;
    for(int i=0;i<numArray.length;i++){
        for(int j=0;j<num.length;j++){
            if(numArray[i][num[j]]==1){
                count++;
            }
        }
    }
    return count;
}   

如果按下按钮1,我想知道位置1、3和5中是否有1,以及有多少个:

调用该方法:

代码语言:javascript
复制
 int[] button1 = {0,2,4};
 System.out.println("the number of 1's:"+countOne(button1));

如果按下了按钮2,我想知道位置1、2、3和4中是否有1,以及有多少个。

代码语言:javascript
复制
 int[] button2 = {0,1,2,3};
 System.out.println("the number of 1's:"+countOne(button2));
票数 1
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/22032016

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档