Вы можете сделать это без преобразования в строку, используя оператор mod и усекающее деление, например: // нерекурсивная оболочка для обработки вырожденного случая 0,0 ввода. Публиковать static int digitCount (int numberr, digit) { if ((nunmber == 0) & & (digit == 0)) return 1; else return digitCountr (номер, цифра); }
public static int digitCountr(int number, int digit){
if (number == 0)
return 0;
if (number % 10 == digit)
return 1 + digitCount(number/10, digit);
else
return digitCount(number/10, digit);
}
Это возвращает 0 при вызове с номером агд, равным 0, который не может быть то, что вы хотите, - но она опирается на что на самом деле для того, чтобы правильно рассчитывать любые фактические нулевые цифры, так что вы хотите нужно поместить обертку вокруг него, если вам нужно другое поведение для этого случая.
public static int digitCount(int number, int digit) {
if ((number==0) && (digit == 0))
return 1;
else
return digitCountr(number, digit);
}
public static int digitCountr(int number, int digit){
if (number == 0)
return 0;
if (number % 10 == digit)
return 1 + digitCount(number/10, digit);
else
return digitCount(number/10, digit);
}
Кроме этого, я считаю, что это точно.
Calling методы Интс? Это не сработает. Кроме того, это не связано напрямую, но это может помочь: http://stackoverflow.com/questions/9533225/how-to-count-how-many-times-a-number-appears-in-a-txt-file –
Вы также назвали ваш метод «цифрой» и назвали одну из аргументов «цифрой». Даже если бы это сработало, это была бы действительно очень плохая идея. –
@ RichardSchwartz работает AFAIK. Это все еще плохая идея. – immibis