Поиск одинаковых цифр в сотнях
int a = 123;
int b = 223;
int ones1, tens1, hundreds1;
int ones2, tens2, hundreds2;
ones1 = a % 10;
tens1 = (a / 10) % 10;
hundreds1 = (a / 100) % 10;
ones2 = b % 10;
tens2 = (b / 10) % 10;
hundreds2 = (b / 100) % 10;
System.out.println("Исходные числа: " + a + " и " + b);
if (ones1 == ones2) {
System.out.println("Цифры совпадают в разряде " + "3" +
" , совпавшие цифры: " + ones1 + " и " + ones2);
}
if (tens1 == tens2) {
System.out.println("Цифры совпадают в разряде " + "2" +
" , совпавшие цифры: " + tens1 + " и " + tens2);
}
if (hundreds1 == hundreds2) {
System.out.println("Цифры совпадают в разряде " + "1" +
" , совпавшие цифры: " + hundreds1 + " и " + hundreds2);
} else {
System.out.println("Нет совпадающих цифр");
}
Такая задача. Даны 2 трехзначных числа, нужно найти в них одинаковые цифры, если они есть, в определенных разрядах (сотни, десятки, единицы).
Использовать только if
, циклы не изучали пока. Если одинаковых цифр нет, то проверка не должна выполняться.
Я написал так, но в моем коде есть недостатки, как выяснилось на проверке.
Помимо выявления одинаковых цифр, выводится сообщение "нет совпадающих цифр", а так же выполняется проверка по разрядам, даже если числа разные. Как исправить, не подскажете?
Ответы (2 шт):
else
в этом коде относится к if (hundreds1 == hundreds2)
. Поэтому если в разряде сотен стоят разные цифры, то выводится "Нет совпадающих цифр" вне зависимости от других результатов.
Если одинаковых цифр нет, то проверка не должна выполняться.
Это абсурдное утверждение, так как невозможно установить наличие одинаковых цифр без проверки.
Скорее всего, следовало сначала сравнить оба числа без разбиения на разряды, и выдать соответствующее сообщение типа "Числа равны, все разряды у них попарно одинаковы" в случае равенства входных чисел a
и b
.
Иначе выполняете разбиение на разряды, и сначала проверяете условие, что все разряды разные, и только потом смотрите попарно:
if (a == b) {
System.out.println("Числа равны, все разряды одинаковы");
} else {
// разбиение чисел на разряды
int ones1 = a % 10, tens1 = a / 10 % 10, hunds1 = a / 100 % 10;
int ones2 = b % 10, tens2 = b / 10 % 10, hunds2 = b / 100 % 10;
if (ones1 != ones2 && tens1 != tens2 && hunds1 != hunds2) {
System.out.println("Нет совпадающих цифр, все разряды разные");
} else {
// попарное сравнение соответствующих разрядов
if (ones1 == ones2) System.out.println("Единицы равны");
if (tens1 == tens2) System.out.println("Десятки равны");
if (hunds1 == hunds2) System.out.println("Сотни равны");
}
}