Целое число по модулю (которое также является числом) дает неверный результат - PullRequest
0 голосов
/ 04 июля 2018

Я пытался найти существующий вопрос, на который уже может быть ответ, но не смог найти. Для данного целого числа 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;
        }

1 Ответ

0 голосов
/ 04 июля 2018

Вы можете попробовать следующим образом:

        if (n % Integer.valueOf(String.valueOf(num.charAt(i))) == 0) {
            count++;
        }

Как видите Integer.valueOf (String s)

Возвращает объект типа Integer, содержащий значение указанной строки.

пока вы проходите в Character.

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...