2013-03-05 91 views
-2

我需要编写一个称为连续的方法,它需要6个参数来检查6个输入是否是连续的数字,而不管顺序如何。如果数字是连续的,则返回true,否则返回false。有人能教我什么是最有效的方法吗?我试过这种方法,但如果我有6个数字,效率会很低?检查连续号码的Java方法

public static boolean consecutive(int numberOne,int numberTwo,int numberThree) { 
    if(((numberTwo==numberOne-1) && (numberThree== numberTwo-1)) || ((numberTwo==numberOne+1) && (numberThree==numberTwo+1)) || ((numberTwo==numberOne+2) &&(numberThree==numberOne+1)) || ((numberTwo==numberOne-1)&& (numberThree==numberOne+1)) || ((numberTwo==numberOne-2) && (numberThree==numberOne-1)) ||((numberTwo==numberOne+1) && (numberThree==numberOne-1))){ 
     return true; 
    }else{ 
     return false; 
    } 
} 

} 
+0

你能告诉我们你在“连续”方法中所做的所有尝试吗? – Jayamohan 2013-03-05 12:09:00

+0

我试过的东西无法工作。此外,我甚至不知道如何将数字重新排列成序列,因为我只是一周的时间。 – user2135654 2013-03-05 12:11:28

+2

我们为什么要做你的功课?你真的认为这会在以后帮助你吗? – sabisabi 2013-03-05 12:17:44

回答

5

值添加到一个数组,数组排序,然后测试顺序组值:

int[] test = new int[] {numberOne, numberTwo, etc...}; 
Arrays.sort(test); 
for (int i = 0; i < test.length - 1; i++) { 
    if (test[i] + 1 != test[i + 1]) { 
    // Not sequential 
    } 
} 
+0

谢谢你克里斯!这真的很有帮助!但是,你能否建议我可以如何纯粹使用循环和if语句? – user2135654 2013-03-05 12:13:25

+1

如果你必须自己实现它,查找冒泡排序,一个很好的排序算法。 – 2013-03-05 12:16:30

+0

谢谢克里斯!我尝试了一种方法,但如果我有6个数字,效率会很低? – user2135654 2013-03-05 12:26:17

1

加强@克里斯的回答,假设没有重复号码:

public static boolean consecutive(
    int numberOne,int numberTwo,int numberThree, 
    int numberFour, int numberFive, int numberSix) { 

int [] ns = { 
    numberOne, numberTwo, numberThree, 
    numberFour, numberFive, numberSix }; 

Arrays.sort(ns); 

return (ns[ns.length-1] - ns[0] == ns.length-1); 
} 
+2

如果存在重复和缺口之类的情况,则不起作用: 1,1,3,4,5,6 – 2013-03-05 12:36:02

+0

确实,我已在答案中注明了它。谢谢! – kamituel 2013-03-05 12:37:10

+0

实际上,这个答案只检查最高和最低的数字是否与数组长度相差1。 – Heinrich 2016-07-20 16:55:26