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(‘.’),那么小数点就不会成为解析出来的单词的一部分。