首页 > 解决方案 > java中的数组成对匹配给出错误还在两个相似元素之间存储数据

问题描述

我有两个数组。它们代表 x 坐标和 y 坐标。代码就像这样,如果两个坐标相同,它会打印一条语句“两个坐标都相同”,否则它们会打印它们不一样

我的代码是

 public static void main(String args[]){
    double[]xcoordinate={2.3,1.2,3.3,5.5,2.3,1.3,7.9,1.2,3.3,3.3,5.2};
    double[]ycordinate={5.4,2.2,4.4,6.6,5.4,1.9,5.2,2.2,3.5,4.4,4.2};
    int i=0,k=1;
    while(i<xcoordinate.length){
        //if(xcoordinate[i]&&ycordinate[i]==xcoordinate[k]&&ycordinate[k]){
        if(xcoordinate[i]==xcoordinate[k]&&ycordinate[i]==ycordinate[k]){
            System.out.println("Both co ordinates are same");
            i++;
            if(k<xcoordinate.length) {
                k = i + 1;
            }

        }
        else{
            System.out.println("They are not same");
        }
        k++;
    }
}

如果我分析数组,我可以看到 2.3 和 5.4 是对的,1.2 和 2.2 是对的,依此类推。如您所见,2.3 和 5.4 在第 5 对重复。所以在这个时候他们打印他们是一样的

但是该 if 语句不会运行代码块。

错误:线程“主”java.lang.ArrayIndexOutOfBoundsException 中的异常:11

如何消除此错误以及如何存储它们不是同一类型的数据?

想存储{{1.2,3.3,5.5}和{2.2,4.4,6.6}}和{{3.3,5.5,2.3,1.3,7.9}和{4.4,6.6,5.4,1.9,5.2}} ... .. 分别地。

标签: javaif-statementwhile-loopbooleanlogic

解决方案


我相信您正在尝试跟踪重复坐标,如果是,那么这可能会有所帮助!

int i=0;
HashMap<Double,Double> hst = new HashMap<Double,Double>();
while(i<xcoordinate.length){

    if(hst.containsKey(xcoordinate[i])){
        if(hst.get(xcoordinate[i]) == ycordinate[i])
        System.out.println("Occured before and now again at pos" +i);
        i++;
        continue;
    }

    System.out.println("Not occured before");
    hst.put(xcoordinate[i],ycordinate[i]);
    i++;
}

推荐阅读