{"record":{"id":"7b1294ea097fe88b","repo":"TheAlgorithms/Java","slug":"number-must-be-zero-for-e-assignment","errorCode":null,"errorMessage":"Number must be zero for E assignment!","messagePattern":"Number must be zero for E assignment!","errorType":"exception","errorClass":"RuntimeException","httpStatus":null,"severity":"error","filePath":"src/main/java/com/thealgorithms/maths/MathBuilder.java","lineNumber":129,"sourceCode":"            }\n            Random random = new Random();\n            number = random.nextDouble(seed);\n            return this;\n        }\n\n        // Takes PI value and sets to NUMBER\n        public Builder pi() {\n            if (number != 0) {\n                throw new RuntimeException(\"Number must be zero for PI assignment!\");\n            }\n            number = Math.PI;\n            return this;\n        }\n\n        // Takes E value and sets to NUMBER\n        public Builder e() {\n            if (number != 0) {\n                throw new RuntimeException(\"Number must be zero for E assignment!\");\n            }\n            number = Math.E;\n            return this;\n        }\n\n        public Builder randomInRange(double min, double max) {\n            if (number != 0) {\n                throw new RuntimeException(\"Number must be zero for random assignment!\");\n            }\n            Random random = new Random();\n            number = min + (max - min) * random.nextDouble();\n            return this;\n        }\n\n        public Builder toDegrees() {\n            if (inParenthesis) {\n                sideNumber = Math.toDegrees(sideNumber);\n            } else {","sourceCodeStart":111,"sourceCodeEnd":147,"githubUrl":"https://github.com/TheAlgorithms/Java/blob/fdfb9a395b310167a66bd29e311e36e0e3e9b964/src/main/java/com/thealgorithms/maths/MathBuilder.java#L111-L147","documentation":"Thrown by Builder.e() when the builder's internal number field is not 0. Same assignment-vs-accumulation pattern as pi() and rand(): e() overwrites number with Math.E and requires a clean slate. Uses RuntimeException.","triggerScenarios":"Calling e() after any operation that left number non-zero: new MathBuilder.Builder(3).e(), or after add/multiply/set on a non-zero builder.","commonSituations":"Developer chains operations expecting e() to participate in arithmetic (e.g., multiply by e), but the API treats it as a raw overwrite. Confusion about builder semantics.","solutions":["Call e() on a fresh Builder (number == 0)","Use multiply(Math.E) or add(Math.E) if you want E in an arithmetic expression","Build current state first, then start fresh for the E assignment"],"exampleFix":"// before\nMathBuilder.Builder b = new MathBuilder.Builder(2).e();\n\n// after\nMathBuilder.Builder b = new MathBuilder.Builder().e();\n// or for arithmetic with E:\nMathBuilder.Builder b2 = new MathBuilder.Builder(2).multiply(Math.E);","handlingStrategy":"validation","validationCode":"// Call e() only on a fresh builder\nMathBuilder.Builder b = new MathBuilder.Builder();  // number == 0\nb.e();","typeGuard":null,"tryCatchPattern":"try {\n    builder.e();\n} catch (RuntimeException e) {\n    builder = new MathBuilder.Builder();\n    builder.e();\n}","preventionTips":["e() overwrites number with Math.E — use multiply(Math.E) for arithmetic instead","Only call e() when number is in its initial 0 state","Do not chain e() after accumulating operations like add or multiply"],"tags":["math","builder","runtime-exception","state-validation"],"backgroundTag":null,"analyzedSha":"fdfb9a395b310167a66bd29e311e36e0e3e9b964","analyzedAt":"2026-08-13T23:36:13.315Z","schemaVersion":2},"datasetVersion":"2026-08-14T00:17:13.853Z"}