Java 快读快写模版

Java 快读快写模版


import java.io.*;

/**
 * java快读&快写
 */
public class Main {
    public static void main(String[] args)  {
        Read read = new Read();
        int a = read.readInt();
        Read.out.printf("Int >> %d\n",a);
        double b = read.readDouble();
        Read.out.printf("double >> %.2f\n",b);
        long c = read.readLong();
        //java %d 包含了byte int long    2247483647超过int范围
        Read.out.printf("long >> %d\n",c); 
        //
        String d = read.readString();
        Read.out.printf("String >> %s\n",d);
        //注意:不能和以上读取同时出现; 单独读取或者最先读取
        String e = read.readStringLine();
        Read.out.printf("StringLine >> %s\n",e);
        //只有将缓冲区的数据进行刷新,才会在控制台进行输出
        Read.out.flush();
        //close 关流
        try {
            read.close();
        }catch (IOException exception){
            exception.printStackTrace();
        }
    }

    /**
     * 一个读取类 Read 替换 Scanner类
     * 快写对象 PrintWriter out 替换 System.out.
     */
     static class Read {
        // 读入对象 StreamTokenizer : 一般数据类型
        static StreamTokenizer st = new StreamTokenizer(new BufferedReader(new InputStreamReader(System.in)));
        // 字符串快速读入对象
        static BufferedReader br = new BufferedReader(new InputStreamReader(System.in));
        // 快速输出对象
        static PrintWriter out = new PrintWriter(new BufferedWriter(new OutputStreamWriter(System.out)));

        //关流
        public void close() throws IOException {
            br.close();
            out.close();
        }

        // 读入整数
        public int readInt()  {
            try {
                st.nextToken();
            } catch (IOException e) {
                e.printStackTrace();
            }
            //navl : double
            return (int) st.nval;
        }
        //读入浮点数
        public double readDouble() {
            try {
                st.nextToken();
            }
            catch (IOException e){
                e.printStackTrace();
            }
            return st.nval;
        }
        //读入长整型
        public long readLong(){
            try {
                st.nextToken();
            }
            catch (Exception e){
                System.out.println();
            }
            return  (long) st.nval;
        }

        //读入字符串 -> sc.next();
        //因为StreamTokenizer在读取输入数据时,是以空格或回车换行为每次输入数据的分隔
        public String readString(){
            try {
                st.nextToken();
            }
            catch (IOException e){
                e.printStackTrace();;
            }
            return st.sval;
        }

        //按行读取 -> sc.nextLine();
        public String readStringLine(){
            String s = null;
            try {
                s = br.readLine();
            }
            catch (IOException e){
                e.printStackTrace();;
            }
            return s;
        }
    }
}
  • StreamTokenizer 默认的分隔符包括空格、制表符、换行符、回车符等
    StreamTokenizer是Java提供的一个用于解析文本输入流的类,它可以将输入流中的字符序列分解成一系列的标记(tokens)。这些标记可以是单词、数字、标识符等。在StreamTokenizer中,存在一个默认的分隔符列表,用于指定哪些字符应该被视为标记之间的分隔符。默认的分隔符包括以下几种:

  • 空格(’ ')

  • 制表符(‘\t’)

  • 换行符(’
    ')

  • 回车符(‘\r’)

  • 分号(‘;’)

  • 逗号(‘,’)

  • 冒号(‘:’)

  • 加号(‘+’)

  • 减号(‘-’)

  • 乘号(‘*’)

  • 除号(‘/’)

  • 百分号(‘%’)

  • 等号(‘=’)

  • 感叹号(‘!’)

  • 问号(‘?’)

  • 括号(‘(’, ‘)’, ‘[’, ‘]’, ‘{’, ‘}’)

  • 尖括号(‘<’, ‘>’)

  • 竖线(‘|’)

  • 反斜杠(‘\’)

  • 双引号(‘"’)

  • 单引号(‘’')

  • 井号(‘#’)

  • 美元符号(‘$’)

  • 下划线(‘_’)

可以通过调用** ordinaryChar 方法 ** 来指定其他字符作为普通字符,这意味着这些字符不会被当作标记的一部分。例如,如果调用st.ordinaryChar(‘.’),那么小数点就不会成为解析出来的单词的一部分。

  • 3
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 1
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论 1
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值