Я пытался найти существующий вопрос, на который уже может быть ответ, но не смог найти.
Для данного целого числа n я пытаюсь применить оператор по модулю как:
n%(each digit of n)
Я преобразую данное целое число "n" в строку и затем получаю каждую цифру данного числа, используя метод str.charAt()
.
static int findDigits(int n) {
String num = String.valueOf(n);
int count = 0;
for(int i=0; i<num.length(); i++)
{
if(n % num.charAt(i) == 0)
{
count++;
}
}
return count;
}
Но n % num.charAt(i)
не возвращает правильный результат.
Например, если n равно 12: когда i = 0, 12% 1 возвращает 12 вместо 0.
Если n равно 1012: когда i = 0, 1012% 1 возвращает 32 вместо 0.
Преобразование num.charAt (i) в целое число, т. Е. Integer.valueOf(num.charAt(i))
также не работает, не имеет никакого эффекта:
Я обнаружил, что использование метода Character.getNumericValue()
дает правильный результат.
Зачем?
Это работает:
static int findDigits(int n) {
String num = String.valueOf(n);
int count = 0;
for(int i=0; i<num.length(); i++)
{
if(n % Character.getNumericValue(num.charAt(i)) == 0)
{
count++;
}
}
return count;
}