Warning: file_get_contents(/data/phpspider/zhask/data//catemap/7/sqlite/3.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,我有一个数组 int a[] = {1,2,3}; int b[] = {1,2}; 如何在数组中找到奇数元素为每个数组项创建一个循环。那些item&1==1是奇数。如果你谈论的是集合比较,请看 int[] longArray = { 1, 3, 2 }; int[] shortArray = { 1, 2 }; //Check which array is longer, if b longer than a then swap boolean found

我有一个数组

int a[] = {1,2,3};
int b[] = {1,2};

如何在数组中找到奇数元素

为每个数组项创建一个循环。那些
item&1==1
是奇数。

如果你谈论的是集合比较,请看

    int[] longArray = { 1, 3, 2 };
    int[] shortArray = { 1, 2 };

    //Check which array is longer, if b longer than a then swap

    boolean found = false;
    int odd = 0;

    for (int i : longArray) {
        for (int j : shortArray) {
            if (i == j)
                found = true;
        }
        if (!found)
            odd = i;
        found = false;
    }
    System.out.println(odd);
这个问题是从集合接口的角度来讨论的,但是列表接口也继承了集合中的相关方法,所以将数组复制到ArrayList对象会很容易

如果希望将其完全保留在本机阵列级别,可能需要执行以下操作:

 public int[] findOddElement(int[] fromArray, int[] secondArray){
  int[] result = new int[fromArray.length];
  int resPointer = 0;
  for (int i = 0;i < fromArray.length;i++){
   boolean notFound = true;
   for (int j = 0; j < secondArray.length; j++) {
    if (fromArray[i] == secondArray[j]) {
     notFound = false;
     break;
    }
   }
   if (notFound){
    result[resPointer] = fromArray[i];
    resPointer++;
   }
  }
  if (resPointer > 0 && resPointer < fromArray.length ) {
   int[] newResult = new int[resPointer];
   for (int i = 0;i < resPointer; i++) {
    newResult[i] = result[i];

   }
   return newResult;
  }
  return result;
 }
public int[]findOddElement(int[]fromArray,int[]secondArray){
int[]结果=新的int[fromArray.length];
int应答者=0;
for(int i=0;i0&&应答器

我在投票中给出了两个答案,前面的答案是嵌套循环,对于很长的数组可能比较慢。在下一个解决方案中,有些人可能不喜欢树集。

可能,您的意思是项目%2==1它是一个输入错误,我的意思是
&
,而不是
%
。您的问题是不连贯的,第二个数组是干什么的?确定您正在寻找一个提示来查找奇数(1,3,5,…)还是别的什么?我想他是在比较这两个数组,找出它们之间唯一的数字。因此,根据他的例子,答案必须是3…这是对odd的奇怪定义,-1表示问题海报的极端惰性。ArrayList不实现Set接口。列表不扩展Set接口。列表和集合是集合接口的两个不同扩展。是的,我的错:XOR讨论中使用的功能由集合接口的集合和列表继承。Edited answer.hey我尝试使用List而不是set,但是我得到了运行时异常IndexOutofBoundException异常发生在remove方法中,因为如果你传入int(这里就是这种情况),它会接受一个“索引”,如果你想像set中那样使用remove,那么你需要传递一个对象,比如Integer,但在这种情况下它将不起作用,因为整数(1)=整数(1)。回到要点,列表允许重复。但事实并非如此。因此,除了“删除实现”之外,由于存在重复项,您最好还是坚持使用集合。这是行不通的!如果奇数元素出现在较短的数组中,它将如何找到它?
    int[] longArray = { 1, 3, 2 };
    int[] shortArray = { 1, 2 };

    //Check which array is longer, if b longer than a then swap

    for (int x:longArray){
        set.add(x);
    }
    for (int x:shortArray){
        if (set.contains(x))
           set.remove(x);
    }
    //odd numbers
    for (Object i:set.toArray())
        System.out.println(i+",");