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));