-2

6つの入力が順序に関係なく連続した数値であるかどうかを確認するために、6つのパラメーターを受け取る連続というメソッドを作成する必要があります。数字が連続している場合はtrueを返し、そうでない場合はfalseを返します。誰かが私にそうするための最も効率的な方法を教えてもらえますか?私はこの方法を試しましたが、6つの数字があると非効率になりますか?

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;
    }
}

}
4

2 に答える 2

10

値を配列に追加し、配列を並べ替えてから、値の連続セットをテストします。

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
  }
}
于 2013-03-05T12:11:30.250 に答える
1

重複する番号がないと仮定して、@Chrisの回答を拡張します。

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 );
}
于 2013-03-05T12:32:44.240 に答える