我已经声明了一些数组,在这些数组中我们有以下值:
{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,然后除以包含该器官的部分的总数。
如果您已经读过这篇文章,我是否从正确的角度解决了这个问题,您还有其他想法吗?
答案 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));