Warning: file_get_contents(/data/phpspider/zhask/data//catemap/4/matlab/17.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 for循环迭代和列出颜色_Java_For Loop_Colors - Fatal编程技术网

Java for循环迭代和列出颜色

Java for循环迭代和列出颜色,java,for-loop,colors,Java,For Loop,Colors,在此代码中 int[] values = new int[] {0, 32, 64, 96, 128, 160, 192, 224, 255}; for (int r = 0; r < values.length; r++){ for (int g = 0; g < values.length; g++){ for (int b = 0; b < values.length; b++) {

在此代码中

int[] values = new int[] {0, 32, 64, 96, 128, 160, 192, 224, 255};
        for (int r = 0; r < values.length; r++){
          for (int g = 0; g < values.length; g++){
            for (int b = 0; b < values.length; b++) {
                System.out.println("Colors are: " + values[r]+ ","+values[g]+ ","+values[b]);
int[]value=newint[]{0,32,64,96,128,160,192,224,255};
对于(int r=0;r
我有一个颜色列表,但它们不是有序的:我希望将这个for循环更改为从白色到黑色,或相反,从黑色到白色的有序颜色列表

如何改变这个循环

非常感谢

您需要:

  • 表示完整RGB三元组的
    Color
  • Color
    上执行
    compariable
    ,从而准确确定所需的颜色顺序
  • 在嵌套循环中,您将构建一个包含所有颜色的
    TreeSet
  • 由于颜色本质上是三维实体,因此不太清楚如何将其顺序线性化,因此您必须做出一些妥协。

    您需要:

  • 表示完整RGB三元组的
    Color
  • Color
    上执行
    compariable
    ,从而准确确定所需的颜色顺序
  • 在嵌套循环中,您将构建一个包含所有颜色的
    TreeSet

  • 由于颜色本质上是三维实体,因此不太清楚如何将其顺序线性化,因此您必须做出一些妥协。

    我会这样写

    int[] values = new int[]{0, 32, 64, 96, 128, 160, 192, 224, 255};
    SortedMap<Long, Color> colours = new TreeMap<>(Collections.reverseOrder());
    for (int r : values) {
        for (int g : values) {
            for (int b : values) {
                long brightness = (r + g + b) / 3;
                long colourScore = (brightness << 24) + (r << 8) + (g << 16) + b;
                colours.put(colourScore, new Color(r,g,b));
            }
        }
    }
    for (Color color : colours.values()) {
        System.out.println(color);
    }
    

    我会这样写

    int[] values = new int[]{0, 32, 64, 96, 128, 160, 192, 224, 255};
    SortedMap<Long, Color> colours = new TreeMap<>(Collections.reverseOrder());
    for (int r : values) {
        for (int g : values) {
            for (int b : values) {
                long brightness = (r + g + b) / 3;
                long colourScore = (brightness << 24) + (r << 8) + (g << 16) + b;
                colours.put(colourScore, new Color(r,g,b));
            }
        }
    }
    for (Color color : colours.values()) {
        System.out.println(color);
    }
    

    已经是这样了:白色=(0,0,0)是第一位,黑色=(255255)是最后一位。你需要更具体地说明你想要什么顺序。你所说的“有序颜色”是什么意思?像彩虹一样的顺序?是的,我的意思是从brigther(白色)开始然后将暗度增加到黑色,例如,白色、黄色、橙色、红色、棕黑色。那么亮度相同的颜色呢?你想按特定的顺序排列吗?@Peter Lawrey:不需要特定的顺序,我只需要一个从白色到黑色的有序颜色的综合列表。已经是这样了:白色=(0,0,0)是第一个,黑色=(255255)是最后一个。你需要更具体地说明你想要什么样的顺序。你所说的“有序的颜色”是什么意思?像彩虹一样的顺序?是的,我的意思是从Brighter(白色)开始然后将暗度增加到黑色,例如,白色、黄色、橙色、红色、棕黑色。那么亮度相同的颜色呢?你想按特定的顺序排列吗?@Peter Lawrey:不需要特定的顺序,我只需要一个从白色到黑色的有序颜色的综合列表。+1但可能会给G最高的意义E,因为它在光谱的中间,眼睛对它有最大的敏感性?“Peter Lawrey:非常感谢你的帮助!+ 1,但是也许给G最高的意义,因为它在光谱的中间,眼睛对它有最大的敏感度?”Peter Lawrey:非常感谢你的帮助。