• Java快速IO(ACM)必备


     en....

    无非用到的是

    1. new Scanner(System.in);

    2.new BUfferReader(new InputStreamReader(System.in);

    3.System.in.read() //需要转换

    当然1,2这两个还有许多坑要注意,比如说 next() 不会读入null字符,就一直等待,nextline() 吸收 到缓冲区 但是不会读入,readLine 与read()也是一样

    这里需要注意:in.nextInt() 接着 in.nextLine()会出现读入空缺现象,很明显,我前面说过,nextLine会吸收 到缓冲区

    贴代码:

    package IO;
    
    import java.io.BufferedReader;
    import java.io.IOException;
    import java.io.InputStream;
    import java.io.InputStreamReader;
    import java.util.StringTokenizer;
    
    /**
     * Class for buffered reading int and double values
     */
    class Reader解决超时 {
        static BufferedReader reader;
        static StringTokenizer tokenizer;
    
        /**
         * call this method to initialize reader for InputStream
         */
        static void init(InputStream input) {
            reader = new BufferedReader(
                    new InputStreamReader(input));
            tokenizer = new StringTokenizer("");
        }
    
        /**
         * get next word
         */
        static String next() throws IOException {
            while (!tokenizer.hasMoreTokens()) {
                //TODO add check for eof if necessary
                tokenizer = new StringTokenizer(
                        reader.readLine());
            }
            return tokenizer.nextToken();
        }
    
        static String nextLine()throws IOException{
            while(!tokenizer.hasMoreElements()){
                tokenizer=new StringTokenizer(
                        reader.readLine()
                );
            }
            return tokenizer.nextToken("
    ");
        }
    
        static int nextInt() throws IOException {
            return Integer.parseInt(next());
        }
    
        static double nextDouble() throws IOException {
            return Double.parseDouble(next());
        }
    
        public static void main(String[] args) throws IOException{
            init(System.in);
            StringTokenizer st = new StringTokenizer("this is a test");
    
            while (st.hasMoreTokens())
    
            {
    
                System.out.println(st.nextToken());
    
            }
           // System.out.println(next());
            System.out.println(nextLine());
        }
    }
  • 相关阅读:
    操作系统笔记(六)页面置换算法 FIFO法 LRU最近最久未使用法 CLOCK法 二次机会法
    文加图, 理解Http请求与响应
    Android Retrofit 2.0使用
    Java 注解 (Annotation)你可以这样学
    MySQL 基本语句
    Java数据类型和MySql数据类型对应表
    Android Library 打造自己的 SDK,并 Maven 发布
    Java并发——线程同步Volatile与Synchronized详解
    Android getScrollX()详解
    图解Android View的scrollTo(),scrollBy(),getScrollX(), getScrollY()
  • 原文地址:https://www.cnblogs.com/dgwblog/p/10047565.html
Copyright © 2020-2023  润新知