关于java快速io
在ccf csp考试中,使用Java语言往往会导致超时,可使用java 的快速io解决这个问题,考试时最好在准备时间敲完这段代码,以免浪费考试时间。
代码实现
package com.company;
import java.io.BufferedReader;
import java.io.IOException;
import java.io.InputStream;
import java.io.InputStreamReader;
import java.util.StringTokenizer;
public class Main {
public static void main(String[] args) {
FastIO fastIO = new FastIO();
//别忘记初始化哦,这里是从标准输入读入,所以是System.in
fastIO.init(System.in);
//尝试读入一个数字
int a = fastIO.nextInt();
System.out.println(a);
//尝试使用next()
String str1 = fastIO.next();
System.out.println(str1);
//尝试使用nextLine();
String str2 = fastIO.nextLine();
System.out.println(str2);
}
}
class FastIO{
BufferedReader reader;
StringTokenizer tokenizer;
void init(InputStream inputStream){
reader = new BufferedReader(new InputStreamReader(inputStream));
tokenizer = new StringTokenizer("");
}
//读入一个字符串
String next(){
while (!tokenizer.hasMoreTokens()){
try{
tokenizer = new StringTokenizer(reader.readLine());
}catch (IOException e){
e.printStackTrace();
}
}
return tokenizer.nextToken();
}
//读入一整行
String nextLine(){
while (!tokenizer.hasMoreElements()){
try{
tokenizer = new StringTokenizer(reader.readLine());
}catch (IOException e){
e.printStackTrace();
}
}
return tokenizer.nextToken("\n");
}
//读入int类型数据
int nextInt(){
return Integer.parseInt(next());
}
//读入double类型数据
double nextDouble(){
return Double.parseDouble(next());
}
}
next()与nextLine()的区别
(参考链接:https://blog.csdn.net/qq_38986609/article/details/78598103)
next()方法在读取内容时,会过滤掉有效字符前面的无效字符,对输入有效字符之前遇到的空格键、Tab键或Enter键等结束符,next()方法会自动将其过滤掉;只有在读取到有效字符之后,next()方法才将其后的空格键、Tab键或Enter键等视为结束符;所以next()方法不能得到带空格的字符串。
nextLine()方法字面上有扫描一整行的意思,它的结束符只能是Enter键,即nextLine()方法返回的是Enter键之前没有被读取的所有字符,它是可以得到带空格的字符串的。