Java Common Element Searcher中的错误

时间:2015-01-20 08:18:14

标签: java arrays

这是重复的问题 - 我不想使用pre-defined methods,而是希望实现我自己的基本 O(n ^ 2) 用于查找2个列表中的公共元素的算法。我的程序循环遍历2 arrays,并将第一个array中的每个元素与第二个array中的所有元素进行比较。这一切都运行正常,除了事实上,程序总是以某种方式总是打印一个" 0"。为什么是这样?我arrays中没有0。

public class ArraySameCase {
    public static void main(String[] args)
    {
        int[] firstArray = new int[5];
        firstArray[0] = 1;
        firstArray[1] = 2;
        firstArray[2] = 7;
        firstArray[3] = 9;
        int[] secondArray = new int[5];
        secondArray[0] = 8;
        secondArray[1] = 7;
        secondArray[2] = 1;
        secondArray[3] = 3;
        for(int i=0; i<firstArray.length; i++){
            for(int y=0; y<secondArray.length; y++){
                if(firstArray[i] == secondArray[y]){
                    System.out.println(firstArray[i]);
                }
            }
        }
    }
}

输出:

  

1
7
0

2 个答案:

答案 0 :(得分:4)

您拥有大小为5的数组,并且只初始化前四个元素。默认情况下,5th为0。

使用以下代码将阵列打印到控制台:

import java.util.Arrays;

public class ArrayPrinter {
    public static void main(String[] args)
    {
        int[] firstArray = new int[5];
        firstArray[0] = 1;
        firstArray[1] = 2;
        firstArray[2] = 7;
        firstArray[3] = 9;

        int[] secondArray = new int[5];
        secondArray[0] = 8;
        secondArray[1] = 7;
        secondArray[2] = 1;
        secondArray[3] = 3;

        System.out.println(Arrays.toString(firstArray));
        System.out.println(Arrays.toString(secondArray));
    }
}

答案 1 :(得分:2)

您定义长度为5的数组,但只添加4个值。因此firstArray[4]secondArray[4]为0。