目录
其实在这种算法比赛中有很多的技巧的
那么来看看吧!!
java的快速输入输出方法
String,double,int,long的输入
import java.io.*;
public class test {
public static void main(String args[]) throws IOException{
StreamTokenizer st = new StreamTokenizer(new BufferedReader(new InputStreamReader(System.in)));
st.nextToken();
String str = st.sval;//读取String类型数据
st.nextToken();
double num1 = st.nval;//读取double类型数据
st.nextToken();
int num2 = (int)st.nval;//读取int类型数据
st.nextToken();
long num3 = (long)st.nval;//读取long类型数据
}
}
可以使用StreamTokenizer类来进行输入操作。当读取字符串类型数据时,可以使用sval方法来获取,该方法以空格或换行符作为分隔符,一次只能读取一个字符串。当读取数字类型数据时,默认为double类型,可以使用nval方法来获取。在每次输入数据之前,需要先调用一次nextToken()方法。记得需要在代码中处理可能抛出的异常。
再注意:StreamTokenizer读取数字默认是double,这意味着如果你的数据是long并且已经超过了double可以承受的精度,那么会带来精度问题,并没有比较方便的解决方法,只能重新使用Scanner.Longnext();
整个字符串(可含空格)的输入
import java.io.*;
public class test {
public static void main(String args[]) throws IOException{
// StreamTokenizer re = new StreamTokenizer(new BufferedReader(new InputStreamReader(System.in)));
BufferedReader re = new BufferedReader(new InputStreamReader(System.in));
String x = re.readLine();
System.out.println(x);
}
}
可以使用BufferedReader类来进行字符串的输出操作。使用readLine()方法可以一次读取整个字符串(包括空格)。这个方法类似于Scanner类中的nextLine()方法的用法,更加简洁。使用BufferedReader类进行输出时,不需要像之前使用StreamTokenizer那样每次都调用nextToken()方法。在使用快速读取之前,不要忘记在代码中抛出可能产生的异常。
快输出模板
import java.io.*;
public class test {
public static void main(String args[]){
PrintWriter pw = new PrintWriter(new OutputStreamWriter(System.out));
pw.print();//不换行输出
pw.println();//换行输出
pw.printf();//格式化输出
pw.flush();//关闭输出流
}
}
PrintWriter类的使用更加简单,只需要把我们平时输出时候的System.out替换成对应的快输出的实例对象名(如上代码为 pw),注意最后输出完成记得flush()一下即可。
在蓝桥杯练习系统中,我随机挑选了两道题。一道使用了快速读取和输出模板,另一道没有使用。你会发现两者在执行速度上的差距非常显著。在那些需要大量输入输出的题目中,这种差异会更加明显。有时候,仅仅一个快速读取输出模板的使用,就能让你在通过(AC)和超出时限(TLE)之间摇摆不定。现在now!!!,试试去使用这个快读快写模板,你会发现它比以前提高了很多效率!