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

时间:2014-02-26 04:47:57

标签: java arrays

我已经声明了一些数组,在这些数组中我们有以下值:

{0, 1, 1, 0, 0}
{1, 0, 0, 0, 1}
{0, 1, 0, 0, 0}

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

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

如果按下按钮1,我想知道1号,3号和5号位置是否有1和1。如果按下按钮2,我想知道是否有任何1位于1,2,3和4位以及多少位。

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

如果您希望阅读我想要完成的内容的详细信息,尽管我应该能够通过对上述问题的有用解决方案来解决所有问题:

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

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

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

如果您已经读过这篇文章,我是否从正确的角度解决了这个问题,您还有其他想法吗?

2 个答案:

答案 0 :(得分:1)

我建议你可能想用二进制函数来做这件事。这是按下按钮2的示例 首先,我们将数组声明为列而不是行

    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 :(得分:1)

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

假设你有一个阵列:

int[][] numArray = {{0, 1, 1, 0, 0},
                    {1, 0, 0, 0, 1},
                    {0, 1, 0, 0, 0}};

你只需要这样的方法:

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个以及有多少:

调用方法:

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

如果按下按钮2,我想知道1号,2号,3号和4号是否有1号和1号。

 int[] button2 = {0,1,2,3};
 System.out.println("the number of 1's:"+countOne(button2));