案例训练及收获1.20:BufferedReader、切割、字符串转化int、排序

BufferedReader类

BufferedReader类从字符输入流中带缓存功能的读取字符 提高了读取的速度,快读

BufferedReader类的快读是与其缓存流相关

BufferedReader类常用readLine() 按行读取字符串

案例分析

1.题目:错误票据

2.最终代码

3.分析

第一行

BufferedReader in=new BufferedReader(new InputStreamReader(System.in));是快读

其中System.in: 这是Java标准库中的一个预定义输入流(键盘录入),InputStreamReader则是起到把字节流转化为字符流的作用BufferedReaderInputStreamReader一起使用可以从输入流中更高效地读取数据。

第十行

int n=Integer.parseInt(in.readLine());

in.readLine()读行获取键盘录入的字符串,用Integer.parseInt()来完成将字符串转化成int类型并赋值给n

第十三到十八行

是一个循环嵌套,设定i<n便是设定了输出为n行,

核心语句为:String[]m=in.readLine().split(" ");

将in.readLine()读取的字符串根据split(" ")按空格分割成多个字符串放入String[]m

再用一个循环将每一次得到的String[]m的每一项存入集合list

通过Collections.sort(list);将所有数据排序

二十一行到三十一行

int m=0;//断号
int x=0;//重号
for(int i=0;i<list.size()-1;i++){
  if((list.get(i+1)-list.get(i))==0){
      x=list.get(i+1)+1;
  }else if((list.get(i+1)-list.get(i))==2){
      m=list.get(i+1);
  }
}
System.out.println(m+" "+x);

上面最难的部分已经解决,只剩下简单的筛选,通用选用for循环逐项比较前后两项

如果相等便是重号,如果大减小等于2那便是断号,之后再相应的输出就好

总结

这道题的收获主要在对于BufferedReader类的了解从无到有,掌握了更快的一种键盘录入的方式,使系统跑的更快

在我的理解里,BufferedReader in=new BufferedReader(new InputStreamReader(System.in));就是导包,创建的一个BufferedReader的对象,后面new InputStreamReader(System.in)则是创建inputStreamreader对象将字节流转化为字符流,System.in则是键盘输入。那么就好理解了,可以直接将in.readLine()当作键盘录入用就好。

还有一点就是将字符串转化为int类型,之前一直不会,只会用toString将其他类型转为字符串,而这次可以用Integer.parseInt();将字符串转化为int类型,并且更深的了解了int和integer的关系

这次案例所用到的键盘录入、分行、切割、排序都是之前用的少或者没用用过的,这次训练更好的掌握了相关的方法以及加深了对这些代码的理解

评论 1
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值