Как определить, является ли int идеальным квадратом? - PullRequest
0 голосов
/ 19 марта 2019

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

static boolean isSquare(int n) {
    IntStream y=IntStream.range(1, n).map(((int x)->{return x*x;}));
    return y.anyMatch(x->(x==n));
}

Ответы [ 2 ]

0 голосов
/ 19 марта 2019

Вы можете наблюдать, что происходит, используя peek в вашей потоковой конвейерной линии следующим образом:

IntStream y=IntStream.range(1, n).map(((int x)->{return x*x;})).peek( System.out::println);

Я считаю, что проблема может заключаться в том, что диапазон должен быть rangeClosed:

 static boolean isSquare(int n) {
    IntStream y=IntStream.rangeClosed(1, n).map(((int x)->{return x*x;})).peek( System.out::println);
    return y.anyMatch(x->(x==n));
}

А также, он не будет работать с отрицательными числами.

Надеюсь, это поможет вам.

0 голосов
/ 19 марта 2019

Сбой для 1, потому что 1 также является идеальным квадратом, и ваш текущий код в настоящее время не обрабатывает этот сценарий. Измените свой код на:

static boolean isSquare(int n) {
    return IntStream.rangeClosed(0, n).map(x -> x * x).anyMatch(x -> x == n);
}

Обратите внимание, как мы используем rangeClosed вместо range, который включает верхнюю и нижнюю границы.

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