java算法竞赛必备之快读快写(超详细解读)

java写算法的缺点:速度慢、读写复杂、莫名WA(错误答案)、TL(超时)、CL(超内存)…

(那我们还学个啥啊,都转c++写算法不香嘛。)别急别急,有缺点不就有优点嘛。

香不香咱不知道。但是玩c++的咱都惹不起。大佬太多,太卷了啊。

所以java优势就体现出来啊。

java写算法的优点:人少比赛好拿奖,java作为老牌语言在web和安卓领域还是爸爸级的存在所以用java写算法也可以为以后开发做准备啊。。。

废话不多说了,快读快写直接上。

StreamTokenizer st = new StreamTokenizer(new BufferedReader(new InputStreamReader(System.in)));//快读
PrintWriter pw = new PrintWriter(new BufferedWriter(new OutputStreamWriter(System.out)));//快写

使用方法:这里推荐一个超级方便的使用方法,直接写一个读类

class Read{
	StreamTokenizer st = new StreamTokenizer(new BufferedReader(new InputStreamReader(System.in)));
	public int nextInt() throws Exception{
		st.nextToken();
		return (int)st.nval;
	}
	public String readLine() throws Exception{	//	不推荐使用
		st.nextToken();
		return st.sval;
	}
}

下面演示一下这个读类的使用

package demo;

import java.io.BufferedReader;
import java.io.BufferedWriter;
import java.io.InputStreamReader;
import java.io.OutputStreamWriter;
import java.io.PrintWriter;
import java.io.StreamTokenizer;

public class Main {
	public static void main(String[] args) throws Exception {
		PrintWriter p = new PrintWriter(new BufferedWriter(new OutputStreamWriter(System.out)));
		Read r = new Read();
		int a = r.nextInt();
		String str1 = r.readLine();
		int b =r.nextInt();
		String str2 = r.readLine();
		System.out.println(a+str1+b+str2);
	}
}
class Read{
	StreamTokenizer st = new StreamTokenizer(new BufferedReader(new InputStreamReader(System.in)));
	public int nextInt() throws Exception{
		st.nextToken();
		return (int)st.nval;
	}
	public String readLine() throws Exception{	//	这个不推荐使用
		st.nextToken();
		return st.sval;
	}
}

输入

32
adfa
23
AAA

输出

32adfa23AAA55

由输入输出知道,值都是读进来的。

注意

我们在使用StreamTokenizer时一般只用来处理数字的输入,对于字符串不使用上面的st.sval即上面的readLine()方法,因为st.sval只会读取字母,对于特殊符号和数字不会读取,读入的会是null。

所以如果我们遇到读字符串的还是老老实实的使用BufferedReader。

BufferedReader bf = new BufferedReader(new InputStreamReader(System.in));
bf.readLine();

好了,看完这篇文章后你可以忘记Scanner了。我这里就不举例子来对比Scanner,BufferedReader,StreamTokenizer他们三个的读入时间,你只要记住BufferedReader和StreamTokenizer是远远比Scanner速度快的。所以咱就忘了他吧。我知道你可能不舍得。但这是我们进步的象征。最后附上证书,快读还是有用的,哈哈哈。
请添加图片描述

Logo

旨在为数千万中国开发者提供一个无缝且高效的云端环境,以支持学习、使用和贡献开源项目。

更多推荐