int nums[] = {
3, 1, 3, 6, 4, 2
};
scanIndexNumber(nums);
nums = new int[]{
3, 6
};
scanIndexNumber(nums);
/** *//**
*扫描连续数(先验证重复,后验证连续数)
*/
public void scanIndexNumber(int[] nums){
//判断重复数和有效数组长度
if (!isNumberOnlyOne(nums) || nums.length == 1)
System.out.println("数据不合法!");
else{
//返回数组中的最大值和最小值
int[] MinAndMax = scanArrayNumberMinAndMax(nums);
//最小值
int min = MinAndMax[0];
//最大值
int max = MinAndMax[1];
//原始数组的长度
int argsArrayLen = nums.length;
checkIndexNumber(argsArrayLen, min, max);
}
System.out.println();
}
/** *//**
*求出数组中的最小和最大值,返回的结果是一个数组。第一个数是最小值,第二个是最大值。
*/
public int[] scanArrayNumberMinAndMax(int[] nums){
//最小值
int min = nums[0];
//最大值
int max = nums[0];
for (int num: nums){
//求最大值
if (min > num)
min = num;
//求最大值
if (max < num)
max = num;
}
int[] result = new int[]{
min, max
};
return result;
}
/** *//**
*验证是否有重复数
*/
public boolean isNumberOnlyOne(int[] nums){
//消除重复数据
Set < Integer > s = new HashSet < Integer > ();
for (int num: nums){
s.add(num);
}
//原始数组的长度
int argsArrayLen = nums.length;
//不重复的数组个数
int arrayLen = s.size();
return argsArrayLen == arrayLen;
}
/** *//**
*验证连续数
*/
public void checkIndexNumber(int argsArrayLen, int min, int max){
//理论上的连续数的总数
int numLen = max - min + 1;
//判断是否为连续数
if (argsArrayLen == numLen){
System.out.println("数组的个数= " + argsArrayLen);
System.out.println("理论上的连续数的总数= " + numLen);
System.out.println("Bing Go!");
}
else
System.out.println("非连续数!");
}