Напишите метод, который принимает четыре целочисленных аргумента и возвращает true тогда и только тогда, когда хотя бы три из четырех значений совпадают - PullRequest
0 голосов
/ 25 мая 2018

Напишите метод public static boolean atLeastThreeMatch (int a, int b, int c, int d), который принимает четыре целочисленных аргумента и возвращает true, если и только если хотя бы три из четырех значений совпадают.Например, если переданы значения 5, 3, 5, 5, он вернет true.Если переданы значения 7, 3, 7, 9, он вернет false.

Для выполнения задачи я написал все возможные условия, которые удовлетворяли бы желаемому результату.Мне не нравилось делать это таким образом, и я чувствую, что есть более простой способ получить желаемый результат.Какие-нибудь мысли?

Ответы [ 2 ]

0 голосов
/ 25 мая 2018

Ниже приведен фрагмент кода, в котором Set сохраняет все входные значения.Набор содержит только различные значения, поэтому, если набор содержит меньше / равно 2 значениям, это означает, что по крайней мере три значения равны.

public boolean atLeastThreeMatch(int a, int b, int c, int d) {
    List<Integer> values = Arrays.asList(a, b, c, d);
    Set<Integer> counter = new HashSet<Integer>();
    counter.addAll(values);
    if(counter.size() <=2){
        return true;
    } else {
        return false;
    }
}
0 голосов
/ 25 мая 2018

Попробуйте создать счетчик, который считает равенства между числами.Например:

int counter=0;
if(num1 == num2)
    counter++;

Наконец:

return counter==3;
...