编写下面的方法,测试某数组是否有四个连续且相同值的数字:
public static boolean isConsecutiveFour(int[] values)
编写测试程序,提示用户输入一个整数列表,调用方法看是否有4个连续且相等的数,显示结论。程序应该首先提示用户键入输入的大小(列表值的个数)。
package pack2;
import java.util.Scanner;
public class CheckPattern {
public static void main(String[] args) {
try(Scanner input = new Scanner(System.in);) {
System.out.print("Enter the number of values: ");
int[] values = new int[input.nextInt()];
System.out.print("Enter the values: ");
for (int i = 0; i < values.length; i++)
values[i] = input.nextInt();
System.out.println("The list has "+(isConsecutiveFour(values) ? "" :
"no ")+"consecutive fours");
}
}
/**四个连续相等的数*/
public static boolean isConsecutiveFour(int[] values) {
int count = 1; //计数
//外层循环获取第i个下标
for (int i = 0; i < values.length; i++) {
count = 1; //计数置为1
//内层循环从第i个下标开始检测后三位是否连续
for (int j = i + 1; j < i + 4 && j < values.length; j++)
if(values[j] == values[i]) count++; //如果相等,count++
if(count == 4) break; //有4个相同连续的数时,退出循环
}
return count == 4 ? true : false;
}
}
public static boolean isConsecutiveFour(int[] values) {
// 初始计数
int count = 1, temp = values[0];
for (int i = 1; i < values.length && count < 4; i++) {
if (temp == values[i]) { // 数相等时加1
count++;
} else { // 否则,置新数并重置count为1
temp = values[i];
count = 1;
}
}
return count >= 4;
}