Warning: file_get_contents(/data/phpspider/zhask/data//catemap/9/java/387.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Java 在数组中搜索特定索引处的值_Java_Arrays - Fatal编程技术网

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

Java 在数组中搜索特定索引处的值,java,arrays,Java,Arrays,我声明了几个数组,在这些数组中,我们有以下值: {0, 1, 1, 0, 0} {1, 0, 0, 0, 1} {0, 1, 0, 0, 0} 我有多个具有相同数量值的数组 对于我的Android应用程序,我将有一组按钮 如果按下按钮1,我想知道是否有任何1位于位置1、3和5,以及有多少个。如果按下按钮2,我想知道是否有任何1位于位置1、2、3和4,以及有多少个 我搜索的所有内容都显示了如何找出数组中是否存在1,但不在特定位置。有什么建议/帮助吗 如果您愿意阅读,请详细说明我试图完成的工作,尽

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

{0, 1, 1, 0, 0}
{1, 0, 0, 0, 1}
{0, 1, 0, 0, 0}
我有多个具有相同数量值的数组

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

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

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

如果您愿意阅读,请详细说明我试图完成的工作,尽管我应该能够通过对上述问题的有用解决方案来解决所有问题:

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

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

我的最终输出将告诉用户该部分器官的百分比。如果一个部分包含一个器官,它将是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 ;
}
字节col1=8;//相当于0 1 0 0 0
字节col2=1;//0 0 0 0 1
字节col3=2;//0 0 0 1 0
//这使原始阵列看起来像
// 0 0 0
// 1 0 0
// 0 0 0
// 0 0 1
// 0 1 0
System.out.println(位计数(col1)+位计数(col2)+位计数(col3));
/*设置或取消设置字节

my_byte=my_byte |(1根据您在问题中的描述,您可以这样做:

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;
}   
假设您有一个数组:

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;
}   
如果按下按钮2,我想知道是否有任何1位于位置1、2、3和4,以及有多少个


迭代数组并检查值?确切地说,问题出在哪里?当你问“我是否从正确的角度解决了这个问题?”,您指的是什么?我相信您知道如何访问阵列…而不启动和显示任何代码,这更像是您要求我们完成您的工作您可能希望查看阵列SparseArray@RafaEl我认为我不能使用ArrayList、HashSet、二进制搜索或foreach循环在整个数组中存在一个值,而不是数组中某个特定点上存在一个值。我没有显示任何代码,因为上面的任何一个都不起作用,我也不知道从我的项目的这一部分开始。我相信,记录日志会给出MSB,而不是计数。@Zong Zheng Li you是对的,必须应用相反,ese方法最好还是直接使用。这正是我开始学习所需要的!@user2329162检查更新的答案,它可能会对你有更多帮助。我已经应用了这个想法,但也许我可以从你那里得到更多的指导?
 int[] button2 = {0,1,2,3};
 System.out.println("the number of 1's:"+countOne(button2));