Java:防止输入输出超时

一、防止输入超时

  当我们直接使用Scanner进行输入操作的时候,每次读取输入的数据都会进行一次硬盘的IO操作,这个操作是很慢的,如果要读取的数据过多,那么我们在刷题网站上就很有可能因为多次的数据读取操作产生超时!那么该如何解决呢?

  首先,我们在操作台上输入的数据存储的硬盘上,我们可以先开辟一个内存缓存区,将输入的数据在内存缓冲区中存储一份,那么每次进行读取时,电脑就可以从缓冲区中读取数据,这种读取方式比起硬盘IO要快的多!

public class test2 {
    //main方法
    public static void main(String[] args) throws IOException {
       Read in=new Read();
       //像使用Scanner一样正常使用Read
    }
}
class Read{
    //字符串裁剪
    StringTokenizer st=new StringTokenizer("");
    //1、字节流->字符流
    //2、带内存缓冲的字符流
    BufferedReader bf=new BufferedReader(new InputStreamReader(System.in));

    String next() throws IOException{
        //如果有分割符,那么就直接读取一个字符
        //如果没有分割符,那么就读取下一行
        while(!st.hasMoreTokens()){
            st=new StringTokenizer(bf.readLine());
        }
        return st.nextToken();
    }
    String nextLine() throws IOException{
        return bf.readLine();
    }
    int nextInt() throws IOException{
        return Integer.parseInt(next());
    }
    long nextLong() throws IOException{
        return Long.parseLong(next());
    }
    Double nextDouble() throws IOException{
        return Double.parseDouble(next());
    }
}

二、防止输出超时

记得使用的时候,最后,要加上out.close(),否则无法显示出来打印的东西!

  PrintWriter out=new PrintWriter(new BufferedWriter(new OutputStreamWriter(System.out)));
  Read in=new Read();
  out.println("请输入id:");
  out.flush();//每次打印语句后使用该方法,将缓冲的数据写到底层输出流中,不然将无法打印出来
  int id=in.nextInt();
  out.println("请输入姓名:");
  out.flush();
  String name=in.next();

  • 9
    点赞
  • 2
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值