如何检查数组列表中的数字是否连续

时间:2020-02-27 04:10:17

标签: java arraylist

我想检查arraylist中的数字是否连续。数组中的数字以1开头,下一个数字应为2、3和4。这意味着每个下一个元素比上一个大1。

public static void main(String[]args){
    ArrayList<Integer> array = new ArrayList<Integer>();
    array.add(1); array.add(3);
    for (int i = 0; i < array.size(); i++){
        if(logic here){
            System.out.println(not sequence);
        }else{
            system.out.pritnln(sequence);
        }
    }
}

对于这种情况,在1之后应为2,但是应该为3。如何为这种情况实现正确的逻辑?谢谢!!!

3 个答案:

答案 0 :(得分:1)

您可以尝试:

Scanner sc = new Scanner(System.in);
System.out.print("Enter number of elements: ");
int input = sc.nextInt();
List<Integer> al = new ArrayList<Integer>();
            
// Store elements into arraylist
for(int i=0; i<input; i++)
    al.add(sc.nextInt());
            
boolean isSequential = IntStream.range(1, al.size()).allMatch(value -> al.get(value) - al.get(value - 1) == 1);
System.out.println(isSequential ? "Sequential" : "Not Sequential");

答案 1 :(得分:0)

您可以只遍历数组一次,检查不是1的某个值的增量:

List<Integer> list = Arrays.asList(new Integer[] {1, 2, 3, 5});
for (int i=1; i < list.size(); ++i) {
    if (list.get(i) - list.get(i-1) != 1) {
        System.out.println("out of sequence");
        break;
    }
}

此打印:

1
2
3
out of sequence

答案 2 :(得分:0)

简单的一线模式,您可以使用IntStream范围来匹配元素:

List<Integer> list = List.of(1, 2, 3);
boolean isSequential = IntStream.range(0, list.size())
        .allMatch(value -> value + 1 == list.get(value));
System.out.println(isSequential);