我想检查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。如何为这种情况实现正确的逻辑?谢谢!!!
答案 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);