Объяснение потока управления - PullRequest
0 голосов
/ 28 июня 2019

Напишите метод с именем hasSharedDigit с двумя параметрами типа int.

Числа находятся в диапазоне от 10 до 99

Метод должен возвращать значение true, если в обоих числах присутствует цифра, например, 2 в 12 и 23;в противном случае метод должен вернуть false.

У меня есть решение, но я не совсем понимаю, как оно работает.Мне нужно объяснение на английском языке.

public class SharedDigit {
    public static boolean hasSharedDigit(int numA,int numB){
        if((numA<10||numA>99)||(numB<10||numB>99)){
            return false;
        }
        int realNumB=numB;
        while(numA>0){
            int numADig=numA%10;
            while(numB>0){
                int numBDig=numB%10;
                if(numADig==numBDig){
                    return true;
                }
                numB=numB/10;
            }
            numA=numA/10;
            numB=realNumB;
        }
        return false;
    }
}

Я не понимаю, как этот код проверяет все возможности сопоставления чисел

1 Ответ

2 голосов
/ 28 июня 2019

Это здесь:

while(numA>0){
  int numADig=numA%10;

использует оператор по модулю , чтобы "получить" последнюю цифру числа, см. здесь для получения дополнительной информации.Таким образом, этот первый шаг возвращает вам «3», например, из 13.

Позже вы делаете:

 numA=numA/10;

, что превращает 13 в 1 (целое деление)!Это начальное условие цикла гарантирует, что вы остановитесь, когда вы выполнили 13/10 .., а затем 1 / 10.

Таким образом, этот цикл превращает 13 в 3, затем 1, а затем останавливается.

И тот же «метод» используется для получения цифр второго числа.И как только вы найдете цифру в обоих числах, вы можете вернуть true.

В противном случае, если вы прошли все цифры первого числа и сравнили их со всеми цифрами во втором числе ... нет совпадений, верните false.

Реальный ответ здесь, кстати: когда вы не понимаете, что делает код:

  • используйте поисковую систему для исследования всего неизвестного вам источника
  • используйте отладчик или простой System.outоператоры .printl (), позволяющие вам наблюдать , что делает код
  • , а затем, наконец, когда все это терпит неудачу и оставляет у вас сомнения, тогда приходите сюда и просите о помощи
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...