Warning: file_get_contents(/data/phpspider/zhask/data//catemap/3/arrays/13.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,我正在开发一个程序,在这个程序中,我将一种颜色与数组中的其他颜色进行比较。我使用欧几里德颜色距离公式()来确定两种颜色之间的颜色距离,但我要做的是得到第二个、第三个和第四个最小值索引,这样我就可以将这些索引的值分配给要比较的值。这是我试过的 private void findUnknownColors(Color[] firstAnchor, Color[] foundAnchor){ //Find distance between each color in first anchor

我正在开发一个程序,在这个程序中,我将一种颜色与数组中的其他颜色进行比较。我使用欧几里德颜色距离公式()来确定两种颜色之间的颜色距离,但我要做的是得到第二个、第三个和第四个最小值索引,这样我就可以将这些索引的值分配给要比较的值。这是我试过的

private void findUnknownColors(Color[] firstAnchor, Color[] foundAnchor){
    //Find distance between each color in first anchor and color arr

    double[] storeClosestColors = new double [24];
    //fill the array with a random value.
    Arrays.fill(storeClosestColors, 5000);

    for(int i = 0; i < colorArray.length; i++){
        storeClosestColors[i] = colorDistance(firstAnchor[0], colorArray[i]);
        if(i < storeClosestColors[2]){
            storeClosestColors[2] = i;
        }
    }
//get 3 closest colors disregarding 0.0
    System.out.println("Closest colors: " + Arrays.toString(storeClosestColors));   
}
这是输出

Color array: [java.awt.Color[r=171,g=162,b=184], java.awt.Color[r=103,g=7,b=10], java.awt.Color[r=183,g=60,b=67], java.awt.Color[r=111,g=20,b=37], java.awt.Color[r=0,g=4,b=45], java.awt.Color[r=72,g=127,b=57], java.awt.Color[r=171,g=172,b=199], java.awt.Color[r=83,g=146,b=89], java.awt.Color[r=146,g=171,b=62], java.awt.Color[r=0,g=3,b=30], java.awt.Color[r=165,g=61,b=49], java.awt.Color[r=140,g=181,b=78], java.awt.Color[r=155,g=22,b=22], java.awt.Color[r=170,g=151,b=64], java.awt.Color[r=5,g=10,b=64], java.awt.Color[r=155,g=147,b=173], java.awt.Color[r=34,g=131,b=51], java.awt.Color[r=140,g=165,b=51], java.awt.Color[r=1,g=15,b=63], java.awt.Color[r=30,g=139,b=64], java.awt.Color[r=178,g=168,b=188], java.awt.Color[r=170,g=36,b=33], java.awt.Color[r=113,g=26,b=46], java.awt.Color[r=112,g=25,b=44]]
Closest colors: [271.20551190471775, 188.49519224638064, 0.0, 148.0690295098877, 304.4738994868854, 221.26990553111827, 301.1983358187757, 236.5966372330765, 230.12584023475068, 309.0199161765306, 40.283177320067495, 252.41092952514953, 112.21335008589664, 183.30020415632384, 291.59154464121553, 242.0912147311422, 273.11361532336684, 222.63613286313162, 293.7586168948921, 285.47859349476624, 283.3636066853858, 73.66764469561926, 135.36298134552888, 138.41173575152507]

我想我可以给你一些建议,告诉你如何做你想做的事(根据我的理解)

  • 从颜色
    C
    (*)计算
    colorArray
    的每种颜色的
    colordance
    ,将每种颜色的距离按与
    colorArray
    的颜色相同的顺序存储。让我们将数组命名为
    colordances
    。所以,
    colordances[i]=colorArray[i]和C之间的距离
  • 复制
    颜色距离
    数组。让我们命名数组
    colordancescope
  • 彩色测距镜上执行
    。进行排序时,跟踪每个步骤(**)中
    colordancescope
    元素的索引变化
  • 如果上一步操作正确,则在该步骤结束时,您应该按排序顺序使用
    colordancescope
    ,以及未排序的
    colordances
    数组中每个元素的顺序。根据这些信息,您可以很容易地从颜色
    C
    中确定
    colorArray
    的第二、第三、第四最近颜色
(*):从您的代码中,我看到的是
C
的值将来自一个数组(
firstAnchor
)。在这种情况下,如果必须使用
firstAnchor
的所有值,则必须重复执行该过程


(**):为了方便地跟踪每个步骤中的索引更改,您将需要两个额外的数组-一个将存储未排序数组中已排序元素的位置,另一个将存储未排序元素的顺序。

能否显示colorArray。确定我将添加它@Omoreupdated my post@OmoreTake数组的大小,除以一个元素的大小。这将为您提供元素的数量。除以2。这是中间的索引,我并不想要中间的索引,我想要第二、第三和第四个最小的双值索引,正如我在问题中所说的@维多维斯特罗米想出了解决问题的办法。我没有发布项目中的所有内容,但是你说的很多内容我已经实现了。这对你有好处。
Color array: [java.awt.Color[r=171,g=162,b=184], java.awt.Color[r=103,g=7,b=10], java.awt.Color[r=183,g=60,b=67], java.awt.Color[r=111,g=20,b=37], java.awt.Color[r=0,g=4,b=45], java.awt.Color[r=72,g=127,b=57], java.awt.Color[r=171,g=172,b=199], java.awt.Color[r=83,g=146,b=89], java.awt.Color[r=146,g=171,b=62], java.awt.Color[r=0,g=3,b=30], java.awt.Color[r=165,g=61,b=49], java.awt.Color[r=140,g=181,b=78], java.awt.Color[r=155,g=22,b=22], java.awt.Color[r=170,g=151,b=64], java.awt.Color[r=5,g=10,b=64], java.awt.Color[r=155,g=147,b=173], java.awt.Color[r=34,g=131,b=51], java.awt.Color[r=140,g=165,b=51], java.awt.Color[r=1,g=15,b=63], java.awt.Color[r=30,g=139,b=64], java.awt.Color[r=178,g=168,b=188], java.awt.Color[r=170,g=36,b=33], java.awt.Color[r=113,g=26,b=46], java.awt.Color[r=112,g=25,b=44]]
Closest colors: [271.20551190471775, 188.49519224638064, 0.0, 148.0690295098877, 304.4738994868854, 221.26990553111827, 301.1983358187757, 236.5966372330765, 230.12584023475068, 309.0199161765306, 40.283177320067495, 252.41092952514953, 112.21335008589664, 183.30020415632384, 291.59154464121553, 242.0912147311422, 273.11361532336684, 222.63613286313162, 293.7586168948921, 285.47859349476624, 283.3636066853858, 73.66764469561926, 135.36298134552888, 138.41173575152507]