{"record":{"id":"593a0afaa9420ecc","repo":"TheAlgorithms/Java","slug":"number-must-be-nonnegative","errorCode":null,"errorMessage":"number must be nonnegative.","messagePattern":"number must be nonnegative\\.","errorType":"exception","errorClass":"IllegalArgumentException","httpStatus":null,"severity":"error","filePath":"src/main/java/com/thealgorithms/maths/ReverseNumber.java","lineNumber":18,"sourceCode":"package com.thealgorithms.maths;\n\n/**\n * @brief utility class reversing numbers\n */\npublic final class ReverseNumber {\n    private ReverseNumber() {\n    }\n\n    /**\n     * @brief reverses the input number\n     * @param number the input number\n     * @exception IllegalArgumentException number is negative\n     * @return the number created by reversing the order of digits of the input number\n     */\n    public static int reverseNumber(int number) {\n        if (number < 0) {\n            throw new IllegalArgumentException(\"number must be nonnegative.\");\n        }\n\n        int result = 0;\n        while (number > 0) {\n            result *= 10;\n            result += number % 10;\n            number /= 10;\n        }\n        return result;\n    }\n}\n","sourceCodeStart":1,"sourceCodeEnd":30,"githubUrl":"https://github.com/TheAlgorithms/Java/blob/fdfb9a395b310167a66bd29e311e36e0e3e9b964/src/main/java/com/thealgorithms/maths/ReverseNumber.java#L1-L30","documentation":"Thrown by ReverseNumber.reverseNumber(int number) when number is negative. The method reverses decimal digits by repeatedly taking number % 10 and building the reversed value; the loop condition (number > 0) and digit extraction assume a non-negative input, so negatives are rejected up front.","triggerScenarios":"Calling reverseNumber(-123) or any reverseNumber(number) where number < 0.","commonSituations":"User-supplied integer not sign-validated; result of a subtraction or signed computation fed directly; assumption that the method preserves the sign (it does not); parsed value from input that accepted negatives.","solutions":["Decide on domain semantics: reject negatives upstream, or pass Math.abs(number) and reapply the sign afterwards.","Validate number >= 0 at the input boundary.","Fix upstream logic so only non-negative values reach the call."],"exampleFix":"// before\nint r = ReverseNumber.reverseNumber(value);\n\n// after\nint sign = value < 0 ? -1 : 1;\nint r = sign * ReverseNumber.reverseNumber(Math.abs(value));","handlingStrategy":"validation","validationCode":"int sign = number < 0 ? -1 : 1;\nint r = sign * ReverseNumber.reverseNumber(Math.abs(number));","typeGuard":null,"tryCatchPattern":null,"preventionTips":["Decide on domain semantics for negatives and apply abs() with sign reapplication if needed.","Validate parsed integers for sign before the call.","Document at the call site whether negatives are errors or to be abs()-ed."],"tags":["math","reverse","invalid-argument","negative-value"],"backgroundTag":null,"analyzedSha":"fdfb9a395b310167a66bd29e311e36e0e3e9b964","analyzedAt":"2026-08-13T23:36:13.315Z","schemaVersion":2},"datasetVersion":"2026-08-14T00:17:13.853Z"}