我的代码似乎可以通过很多情况,但是我的代码似乎无法通过特定的私人测试用例。谁能帮我吗?
static boolean isSquare(int n) {
IntStream y=IntStream.range(1, n).map(((int x)->{return x*x;}));
return y.anyMatch(x->(x==n));
}
答案 0 :(得分:0)
它失败1,因为1也是一个完美的正方形,并且您当前的代码当前无法处理这种情况。将您的代码更改为:
static boolean isSquare(int n) {
return IntStream.rangeClosed(0, n).map(x -> x * x).anyMatch(x -> x == n);
}
请注意,我们如何使用rangeClosed
而不是同时包含上限和下限的range
。
答案 1 :(得分:0)
您可以像这样在流水管道中使用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));
}
而且,它不适用于负数。
希望这可以为您提供帮助。