首先一行一行接受数据我是不太会的,以下就是一行一行接收数据的过程。这是重点!
Scanner s = new Scanner(scanner.nextLine());
Scanner scanner = new Scanner(System.in);
int n=scanner.nextInt();
int[] a=new int[100001];
int i=0;
//注意这里一定是j<=n,不然就会少读最后一行的数据
//也可以在这里加一行scanner.nextLine();然后for循环正常进行
for(int j=0;j<=n;j++){
Scanner s = new Scanner(scanner.nextLine());
while(s.hasNext()){
a[i]=s.nextInt();
i++;
}
}
其他的就是查重不一定非得是集合才可以,数组也可以查重,不要忘记这个排序,有时没必要自己写排序算法
Arrays.sort(a, 0, len);
完整代码
import java.util.Arrays;
import java.util.Scanner;
public class 错误票据 {
public static void main(String[] args) {
Scanner scanner = new Scanner(System.in);
int n=scanner.nextInt();
int[] a=new int[100001];
int i=0;
//注意这里一定是j<=n,不然就会少读最后一行的数据
for(int j=0;j<=n;j++){
Scanner s = new Scanner(scanner.nextLine());
while(s.hasNext()){
a[i]=s.nextInt();
i++;
}
}
int len=i;
Arrays.sort(a, 0, len);
int p=0,q=0;
for(int j=1;j<len;j++){
//查断号
if((a[j]!=a[j-1]+1)&&a[j]!=a[j-1]){
p=a[j-1]+1;
}
//查重号
if(a[j]==a[j-1]){
q=a[j];
}
}
System.out.println(p+" "+q);
}
}