{"record":{"id":"be1af0c25b2fc347","repo":"TheAlgorithms/JavaScript","slug":"invalid-input-please-provide-valid-number","errorCode":null,"errorMessage":"Invalid input, please provide valid number","messagePattern":"Invalid input, please provide valid number","errorType":"exception","errorClass":"Error","httpStatus":null,"severity":"error","filePath":"Project-Euler/Problem017.js","lineNumber":100,"sourceCode":"}\n\n/**\n * Function responsible for calculating total number word length\n * for provided input number\n * Validation is performed for input\n * Loop is executed to find total word length for given number range\n * starting from 1\n *\n *\n * @param {number} number\n * @returns {number}\n */\nconst countNumberWordLength = (number) => {\n  let count = 0\n\n  // Not a number check\n  if (Number.isNaN(parseInt(number))) {\n    throw new Error('Invalid input, please provide valid number')\n  }\n\n  // Number should be greater than 1\n  if (number < 1) {\n    throw new Error('Please provide number greater that 1')\n  }\n\n  // Loop to calculate word length by calling {@link numberToWord}\n  for (let i = 1; i <= number; i++) {\n    count += numberToWordLength(i)\n  }\n\n  // return final count for number word length\n  return count\n}\n\nexport { countNumberWordLength }\n","sourceCodeStart":82,"sourceCodeEnd":118,"githubUrl":"https://github.com/TheAlgorithms/JavaScript/blob/5c39e87a9a31f279c60f830ad74a845e4788a517/Project-Euler/Problem017.js#L82-L118","documentation":"Thrown by `countNumberWordLength(number)` (Project Euler #17) when `Number.isNaN(parseInt(number))` is true - i.e. when the input cannot be parsed as an integer at all (e.g. 'abc', null becomes NaN). Be aware `parseInt('12abc')` returns 12 (passes), and `parseInt(12.5)` returns 12, so partial-parse and float inputs slip through this guard.","triggerScenarios":"Call `countNumberWordLength('abc')`, `countNumberWordLength(null)`, `countNumberWordLength({})`. Numeric strings like '5' pass; partially-numeric strings like '5x' also pass.","commonSituations":"Empty form fields forwarded without validation, free-text user input, or values from a CSV where a column has mixed types.","solutions":["Validate strictly upstream: `Number.isInteger(Number(input))` rather than relying on parseInt.","Strip/verify the input is purely numeric with `/^\\d+$/` before calling.","Reject empty/null/undefined explicitly before forwarding."],"exampleFix":"// before\ncountNumberWordLength(rawInput) // rawInput could be '' or 'abc'\n\n// after\nconst n = Number(rawInput)\nif (!Number.isInteger(n)) throw new TypeError('input must be an integer')\ncountNumberWordLength(n)","handlingStrategy":"validation","validationCode":"const n = Number(number)\nif (!Number.isInteger(n)) {\n  throw new TypeError('input must be an integer')\n}\ncountNumberWordLength(n)","typeGuard":"const isIntegerLike = (x) => Number.isInteger(Number(x))","tryCatchPattern":null,"preventionTips":["Do not rely on parseInt - it accepts trailing garbage like '5x'.","Use Number(x) + Number.isInteger for strict integer validation.","Reject empty/null/undefined explicitly at the form layer."],"tags":["input-validation","project-euler","parse-pitfall","loose-check"],"backgroundTag":null,"analyzedSha":"5c39e87a9a31f279c60f830ad74a845e4788a517","analyzedAt":"2026-08-13T04:54:54.474Z","schemaVersion":2},"datasetVersion":"2026-08-13T09:17:06.757Z"}