BufferedReader和BufferedWriter

 其实就是优化的输入输出:

1.BufferedReader:从缓冲区中读取内容

        BufferedReader temp=new BufferedReader(new InputStreamReader(System.in));

        //这里输入的时候,碰到回车键就表示输入终止了,相当于只能输入一行
        System.out.println("请输入内容:");

        String str=temp.readLine();//表示读出一行

        System.out.println(str);

 

new BufferReader将字符流放到字符流缓冲区之中

但是System.in得到的是字节流

所以需要通过InputStreamReader()方法将字节流转化为字符流

如果想要读入多行数据:

       BufferedReader temp=new BufferedReader(new FileReader(new File("C://Users//15776//Desktop//test//人名.txt")));

       //readline函数每次读入一行数据
        String str1=temp.readLine();
        String str2= temp.readLine();
        String str3= temp.readLine();
        String str4= temp.readLine();
        String str5= temp.readLine();
        String str6= temp.readLine();

        System.out.println(str1);//mother
        System.out.println(str2);//jack
        System.out.println(str3);//monkey
        System.out.println(str4);//孟克
        System.out.println(str5);//ribuluo
        System.out.println(str6);//#¥*

一个实战中遇到的例子:

没用BufferedReader,需要一个一个

//读入一个数组,本来是:
Scanner sc=new Scanner(System.in);

//输入数组的长度
int n=sc.nextInt();
int[] nums=new int[n];

for(int i=0;i<n;i++)
{
   nums[i]=sc.nextInt();
}

用了BufferedReader:可以一次性

        BufferedReader br=new BufferedReader(new InputStreamReader(System.in));

        String[] strs=br.readLine().split(" ");

        int[]  nums=new int[100];

        for(int i=0;i<strs.length;i++)
        {
            nums[i]=Integer.parseInt(strs[i]);
        }

        br.close();
    

2.BufferedWriter:输出数据

BufferedWriter bw=new BufferedWriter(new OutputStreamWriter(System.out));

bw.write(num);

bw.flush();

//这样比直接System.out.println(num)要更快很多

//输入一串字符(包括汉字,数字,空格,英文字母.....)分别统计出各类的个数
public class test
{
    public static void main(String[] args) throws IOException
    {
        String string=new String("");
        int hanzi=0;//统计汉字的个数
        int zimu=0;//统计字母的个数
        int kongge=0;//统计空格的个数
        int shuzi=0;//统计数字的个数
        int qita=0;
        System.out.println("请输入一行字符:");

        //下面两行代码的意思是:第一行:先将字符串放到缓冲区里面
        //                  第二行:然后将缓冲区的字符串赋给string,这样string就等于我们刚才输入的字符串
        BufferedReader br=new BufferedReader(new InputStreamReader(System.in));
        string=br.readLine();



        byte[] bytes=string.getBytes();

        for(int i=0;i<bytes.length;i++)
        {
            //System.out.println(bytes[i]);
            if((bytes[i]>=65&&bytes[i]<=90)||(bytes[i]>=97&&bytes[i]<=122))  zimu++;
            else if(bytes[i]==32)   kongge++;
            else if(bytes[i]>=48&&bytes[i]<=57)  shuzi++;
            else if(bytes[i]<0)      hanzi++;
            else    qita++;
        }
        System.out.println(zimu);
        System.out.println(hanzi/3);
        System.out.println(kongge);
        System.out.println(shuzi);
        System.out.println(qita);
        
        // 最终的输入输出如下:
        //    java真是太棒了!!  wotaixihuanle  123456
        //    17
        //    5
        //    4
        //    6
        //    2
    }
}

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值