蓝桥杯 历届试题 错误票据 java
这题其实不难,我的思路是把所有数读入一个list中,然后一个for循环比较即可。
import java.util.ArrayList;
import java.util.Collections;
import java.util.List;
import java.util.Scanner;
public class Main {
public static void main(String[] args) {
// TODO Auto-generated method stub
Scanner cin=new Scanner(System.in);
int n=cin.nextInt();
List<Integer> l=new ArrayList<Integer>();
while(cin.hasNext()) {
l.add(cin.nextInt());
}
Collections.sort(l);
int a=0,b=0;
for(int i=0;i<l.size()-1;i++) {
if(l.get(i)+1<l.get(i+1)){
a = l.get(i)+1 ;
}
if(l.get(i).equals(l.get(i+1))){
b = l.get(i);
}
}
System.out.println(a+" "+b);
}
}
输入其实不用String读入一行再拆分什么的,因为编译器输入一堆数字后直接结束输入,所以直接用hasNext()然后一个个读取数字即可。
我在做这题时遇到了一个坑,那就是Interger的比较问题。list中的整数是Interger包装类,用这种类时不能用 == 直接比较,而是要用equals()来比较(这个问题可以自行百度)。但是可以用 < 和 > 来比较大小,大小于号会自动拆封再比较。