Java 如何找到数字数组的异或值

Java 如何找到数字数组的异或值,java,arrays,xor,Java,Arrays,Xor,我想知道一个数字中所有数字的频率是否相同。我使用了一个大小为10(数字0-9)的数字数组,并用每个数字的频率初始化它 eg: 221133 dig[] = {0,2,2,2,0,0,0,0,0,0}; and ans = dig[0]; for(a=1;a<10;a++) { if(dig[a]!=0) ans = ans ^ dig[a]; } eg:221133 dig[]={0,2,2,0,0,0,0,0}; 及 ans=挖掘[0]; 对于(a=1;a如果

我想知道一个数字中所有数字的频率是否相同。我使用了一个大小为10(数字0-9)的数字数组,并用每个数字的频率初始化它

eg: 221133
dig[] = {0,2,2,2,0,0,0,0,0,0};
and 
ans = dig[0];
for(a=1;a<10;a++)
{
    if(dig[a]!=0)
        ans = ans ^ dig[a];
}
eg:221133
dig[]={0,2,2,0,0,0,0,0};
及
ans=挖掘[0];
对于(a=1;a如果你“想知道一个数字中所有数字的频率是否相同”,那么你应该比较这些元素,而不是对它们进行异或运算

public boolean isAllTheSame(int[] dig)
{
  int ans = dig[0];
  for ( int a = 1; a < 10; ++a )
  {
    if ( dig[a] != 0 )
    {
      if ( dig[a] != ans )
        return false;
      ans = dig[a];
    }
  }
  return true;
}
公共布尔值完全相同(int[]dig)
{
int-ans=dig[0];
对于(int a=1;a<10;++a)
{
如果(挖掘[a]!=0)
{
if(dig[a]!=ans)
返回false;
ans=挖掘[a];
}
}
返回true;
}

这将解决您的第一个问题“检查相同频率”:


正如前面提到的int注释,XOR将不适用于此;但是,您可以使用解决方法:

示例

int [] dig = {0,2,2,2,0,0,0,0,0,0};

Set<Integer> set = new HashSet<>();

for (int d : dig)
{
    if (d != 0)
        set.add(d);
}

// check for less than 2 since 1=only 1 val, and 0=no values other than 0
if (set.size() < 2)
    System.out.println("All values are the same");
else
    System.out.println("Not all values are the same");
int[]dig={0,2,2,0,0,0,0,0};
Set=newhashset();
for(int d:dig)
{
如果(d!=0)
增加(d);
}
//检查是否小于2,因为1=仅1 val,0=除0之外没有其他值
if(set.size()<2)
System.out.println(“所有值都相同”);
其他的
System.out.println(“并非所有值都相同”);

我不明白。你想对数组中的所有非零值进行异或运算。但是为什么?等于
0的异或运算会发现所有数字是否都出现偶数次!否-只有偶数计数的异或运算(2,4,6…)如果要知道它们是否都相同,请找到第一个非零值,并将其与所有其他非零值进行比较。更不要说误报(例如,2^5^7=0)好的。这太有用了。非常感谢。我想知道如何处理奇数的异或。这很有效,但有一个小的修正。ans应该被分配数组中第一个非零元素的值。谢谢:)@shylajhaa为什么要切换到另一个需要修正的答案(即不是完整的解决方案)?
int [] dig = {0,2,2,2,0,0,0,0,0,0};

Set<Integer> set = new HashSet<>();

for (int d : dig)
{
    if (d != 0)
        set.add(d);
}

// check for less than 2 since 1=only 1 val, and 0=no values other than 0
if (set.size() < 2)
    System.out.println("All values are the same");
else
    System.out.println("Not all values are the same");