有 Java 编程相关的问题?

你可以在下面搜索框中键入要查询的问题!

java中的if语句数组成对匹配也会在两个相似的元素之间存储数据

我有两个数组。它们分别表示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在第五对重复。因此,在这一次,它们打印的是相同的

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

错误:线程“main”java中出现异常。lang.ArrayIndexOutofBounds异常: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,5.4,1.9,5.2}。。。。。分开


共 (3) 个答案

  1. # 1 楼答案

    除了解决您的评估问题的Simion给出的答案之外,您是否会有一个enless循环,因为当您的数字相同时,您只会增加i(i++)

  2. # 2 楼答案

    您需要更改,但出现语法错误:

    if((xcoordinate[i]==xcoordinate[k])&&(ycordinate[i]==ycordinate[k]))
    

    如果表达式的计算结果与编码不符

    编辑2:以下是完整的可行代码:

     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};
        for(int i = 0; i < xcoordinate.length; i++)
        for(int k = i+1; k < xcoordinate.length; k++)
                if(xcoordinate[i]==xcoordinate[k]&&ycordinate[i]==ycordinate[k]){
                System.out.println("Both co ordinates are same: " + i + "," + k);
            }
            else{
                System.out.println("They are not same" + i + " " + k);
            }
        }
    

    编辑3:相同的功能,使用while循环,正确的操作方式:

    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;
        while(i < xcoordinate.length)
        {
            int k = i+1;
            while(k < xcoordinate.length)
            {
            if(xcoordinate[i]==xcoordinate[k]&&ycordinate[i]==ycordinate[k]){
                System.out.println("Both co ordinates are same: " + i + "," + k);
            }
            else{
                System.out.println("They are not same" + i + " " + k);
            }
            k++;
            }
            i++;
        }
    }
    
  3. # 3 楼答案

    我相信你是在跟踪重复的坐标, 如果是,那么这可能会有所帮助

    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++;
    }