{"record":{"id":"ce02511e601fa818","repo":"TheAlgorithms/Java","slug":"green-should-be-between-0-and-255","errorCode":null,"errorMessage":"green should be between 0 and 255","messagePattern":"green should be between 0 and 255","errorType":"validation","errorClass":"IllegalArgumentException","httpStatus":null,"severity":"error","filePath":"src/main/java/com/thealgorithms/conversions/RgbHsvConversion.java","lineNumber":93,"sourceCode":"\n        return getRgbBySection(hueSection, chroma, matchValue, secondLargestComponent);\n    }\n\n    /**\n     * Conversion from the RGB-representation to the HSV-representation.\n     *\n     * @param red Red-component of the color.\n     * @param green Green-component of the color.\n     * @param blue Blue-component of the color.\n     * @return The tuple of HSV-components.\n     */\n    public static double[] rgbToHsv(int red, int green, int blue) {\n        if (red < 0 || red > 255) {\n            throw new IllegalArgumentException(\"red should be between 0 and 255\");\n        }\n\n        if (green < 0 || green > 255) {\n            throw new IllegalArgumentException(\"green should be between 0 and 255\");\n        }\n\n        if (blue < 0 || blue > 255) {\n            throw new IllegalArgumentException(\"blue should be between 0 and 255\");\n        }\n\n        double dRed = (double) red / 255;\n        double dGreen = (double) green / 255;\n        double dBlue = (double) blue / 255;\n        double value = Math.max(Math.max(dRed, dGreen), dBlue);\n        double chroma = value - Math.min(Math.min(dRed, dGreen), dBlue);\n        double saturation = value == 0 ? 0 : chroma / value;\n        double hue;\n\n        if (chroma == 0) {\n            hue = 0;\n        } else if (value == dRed) {\n            hue = 60 * (0 + (dGreen - dBlue) / chroma);","sourceCodeStart":75,"sourceCodeEnd":111,"githubUrl":"https://github.com/TheAlgorithms/Java/blob/fdfb9a395b310167a66bd29e311e36e0e3e9b964/src/main/java/com/thealgorithms/conversions/RgbHsvConversion.java#L75-L111","documentation":"Thrown by RgbHsvConversion.rgbToHsv when the green component is less than 0 or greater than 255. RGB channels are 8-bit unsigned values; the conversion normalizes green by dividing by 255, so out-of-range values produce incorrect HSV ratios.","triggerScenarios":"Passing a negative green value. Passing a green value above 255 from a higher-bit-depth source. Supplying a normalized 0–1 float where an int 0–255 is expected.","commonSituations":"Processing images with more than 8 bits per channel. Mixing normalized and unnormalized color scales. Accepting color values from an API or config that uses a different range.","solutions":["Clamp green to [0, 255] using Math.max(0, Math.min(255, green)) before calling rgbToHsv.","Scale higher-bit-depth values down to the 0–255 range before conversion.","Normalize 0–1 floats by multiplying by 255 and rounding."],"exampleFix":"// before\ndouble[] hsv = RgbHsvConversion.rgbToHsv(red, green, blue);\n\n// after\ngreen = Math.max(0, Math.min(255, green));\ndouble[] hsv = RgbHsvConversion.rgbToHsv(red, green, blue);","handlingStrategy":"validation","validationCode":"green = Math.max(0, Math.min(255, green));\ndouble[] hsv = RgbHsvConversion.rgbToHsv(red, green, blue);","typeGuard":"static boolean isValidRgbChannel(int channel) {\n    return channel >= 0 && channel <= 255;\n}","tryCatchPattern":"try {\n    double[] hsv = RgbHsvConversion.rgbToHsv(red, green, blue);\n} catch (IllegalArgumentException e) {\n    // green out of range; clamp and retry\n    green = Math.max(0, Math.min(255, green));\n    double[] hsv = RgbHsvConversion.rgbToHsv(red, green, blue);\n}","preventionTips":["Clamp the green channel to [0, 255] alongside red and blue in a single guard.","Scale 16-bit or HDR values to 0–255 before calling rgbToHsv.","Use a helper method to validate all three channels at once."],"tags":["color-conversion","input-validation","rgb","range-check"],"backgroundTag":null,"analyzedSha":"fdfb9a395b310167a66bd29e311e36e0e3e9b964","analyzedAt":"2026-08-13T23:36:13.315Z","schemaVersion":2},"datasetVersion":"2026-08-14T00:17:13.853Z"}