Вы можете наблюдать, что происходит, используя 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));
}
А также, он не будет работать с отрицательными числами.
Надеюсь, это поможет вам.