Целые числа могут содержать только числа до 2 ^ 32 - 1. Кроме того, почему вы преобразуете входной параметр в целое число?
Другое дело, что вы подсчитываете количество цифр в каждой цифре, ведущейдо делителя, поскольку вы выполняете цикл от 0 до creditCardNumber
в for(int i = 0; i <= creditCardNumber; i++){ ... }
.Так, например, 10000 вернет количество цифр в 1, количество цифр в 2, вплоть до 10000.
Наконец, всю функцию можно выполнить в одной строке с помощью
return Long.toString(creditCardNumber).length();
или
return creditCardNumber.toString().length();
, если вы измените creditCardNumber
на Long
вместо long
, но вам придется вызывать его с суффиксом l
в конце.
Если вы хотите что-то еще короче, вы можете сделать
return (creditCardNumber+"").length();