我声明了几个数组,在这些数组中我们有以下值:
{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,然后除以包含该器官的部分的总数。
如果你已经读到这里,我从正确的角度来解决这个问题,你还有其他想法吗?
发布于 2014-02-26 13:01:16
我建议您可能希望使用二进制函数来完成此任务。下面是一个示例,当第一次按下按钮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
发布于 2014-02-26 13:21:09
根据你在问题中的描述,你可以这样做:
假设你有一个数组:
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,以及有多少个。
int[] button2 = {0,1,2,3};
System.out.println("the number of 1's:"+countOne(button2));https://stackoverflow.com/questions/22032016
复制相似问题