【发布时间】:2016-10-14 07:26:22
【问题描述】:
编写一个名为 Continuous 的方法,它接受三个整数作为参数,如果它们是三个连续的数字,则返回 true;也就是说,如果可以将数字排列成一个顺序,使得存在某个整数 k,使得参数的值是 k、k+1 和 k+2。如果整数不连续,您的方法应该返回 false。请注意,顺序并不重要;对于以任何顺序传递的相同三个整数,您的方法应该返回相同的结果。 例如,连续调用(1, 2, 3)、连续调用(3, 2, 4) 和连续调用(-10, -8, -9) 将返回 true。连续调用(3, 5, 7)、连续调用(1, 2, 2) 和连续调用(7, 7, 9) 将返回 false。
这就是我目前所拥有的,并且不断收到无限循环错误并跳过测试
public boolean consecutive(int x, int y, int z) {
Scanner kb = new Scanner(System.in);
x = kb.nextInt();
y = kb.nextInt();
z = kb.nextInt();
if (((x < y && x < z) && (y < z && ((y - x) == 1) && ((z - x) == 2)))
||((z < y && ((z - x) == 1) && ((y - x) == 2))))
{
return true;
} else if (((y < x && y < z)&& (x < z && ((x - y) == 1) && ((z - y) == 2)))
|| ((z < x && ((z - y) == 1) && ((x - y) == 2))))
{
return true;
} else if (((z < x && z < y)&& (y < x && ((y - z) == 1) && ((x - z) == 2)))
||((x < y && ((x - z) == 1) && ((y - z) == 2))))
{
return true;
} else {
return false;
}
【问题讨论】:
-
啊啊啊我的眼睛 :( :-/
-
无限循环?没有循环或递归调用......我不会评论那个算法
-
好吧,让我们谈谈那个代码......为什么你在参数中收到
x,y,z,值是什么?你永远不会关闭扫描仪,这很糟糕。对于逻辑,您应该尝试一些数学而不是 PURE 条件,或者简单地找到越来越小的数字...... -
没有比 完全 不必要的
if ... then return else构造更多的红色破布了 :-) 抛弃else行,因为如果 @ 987654325@部分或进行,它们没有效果。