最大难点:输入问题
注意事项:
Scanner和缓冲流最好不要混用,容易出现意想不到的错误
int n=Integer.parseInt(reader.readLine());//将读取的字符串转换为整型
//split里的参数是正则表达式,被空格(几个无所谓)之间分隔的两个字符串分别赋值给s[i]和s[i+1]
String[] s = reader.readLine().split("\\s+");
这题比较简单,用哈希表就能算了
BufferedReader reader=new BufferedReader(new InputStreamReader(System.in));
Scanner scanner=new Scanner(System.in);
int[] arr=new int[100010];//记录每个数字出现数字
//int n=scanner.nextInt();//用这个会报错
int n = Integer.parseInt(reader.readLine().trim());//trim()的作用是可以去掉字符串两端的多余的空格
int min=0,max=0;//记录最小数和最大数
for(int i=0;i<n;i++) {
String[] strings=reader.readLine().split("\\s+");
for(int j=0;j<strings.length;j++) {
int num=Integer.parseInt(strings[j]);
min=Math.min(min, num);
max=Math.max(max, num);
arr[num]++;
}
}
int duan=0,chong=0;
for(int i=min;i<=max;i++) {
if(arr[i]==0)duan=i;
if(arr[i]==2)chong=i;
}
System.out.println(duan+" "+chong);
Scanner读取方式:
Scanner reader=new Scanner(System.in);
int[] arr=new int[100010];//记录每个数字出现数字
int n = Integer.parseInt(reader.nextLine().trim());//trim()的作用是可以去掉字符串两端的多余的空格
int min=0,max=0;//记录最小数和最大数
for(int i=0;i<n;i++) {
String[] strings=reader.nextLine().split("\\s+");
for(int j=0;j<strings.length;j++) {
int num=Integer.parseInt(strings[j]);
min=Math.min(min, num);
max=Math.max(max, num);
arr[num]++;
}
}
int duan=0,chong=0;
for(int i=min;i<=max;i++) {
if(arr[i]==0)duan=i;
if(arr[i]==2)chong=i;
}
System.out.println(duan+" "+chong);
大佬,scanner可以用吗?就是用scanner写这个题目
可以
大佬我还有一个问题,输入流不是要和输出流一起用吗?为什么这里用System.out.println也可以输出数据
还有就是bufferedRead这个在哪里看用法啊 我在csdn上面找不到
可以一起吧,输入流不是一般输入数据后赋值给变量吗,System打印也是打印变量,这个输入流我是看别人写的哈哈
这题难点就是输入,,但是蓝桥杯 oi赛制又只能提交一次