一、防止输入超时
当我们直接使用Scanner进行输入操作的时候,每次读取输入的数据都会进行一次硬盘的IO操作,这个操作是很慢的,如果要读取的数据过多,那么我们在刷题网站上就很有可能因为多次的数据读取操作产生超时!那么该如何解决呢?
首先,我们在操作台上输入的数据存储的硬盘上,我们可以先开辟一个内存缓存区,将输入的数据在内存缓冲区中存储一份,那么每次进行读取时,电脑就可以从缓冲区中读取数据,这种读取方式比起硬盘IO要快的多!
public class test2 {
//main方法
public static void main(String[] args) throws IOException {
Read in=new Read();
//像使用Scanner一样正常使用Read
}
}
class Read{
//字符串裁剪
StringTokenizer st=new StringTokenizer("");
//1、字节流->字符流
//2、带内存缓冲的字符流
BufferedReader bf=new BufferedReader(new InputStreamReader(System.in));
String next() throws IOException{
//如果有分割符,那么就直接读取一个字符
//如果没有分割符,那么就读取下一行
while(!st.hasMoreTokens()){
st=new StringTokenizer(bf.readLine());
}
return st.nextToken();
}
String nextLine() throws IOException{
return bf.readLine();
}
int nextInt() throws IOException{
return Integer.parseInt(next());
}
long nextLong() throws IOException{
return Long.parseLong(next());
}
Double nextDouble() throws IOException{
return Double.parseDouble(next());
}
}
二、防止输出超时
记得使用的时候,最后,要加上out.close(),否则无法显示出来打印的东西!
PrintWriter out=new PrintWriter(new BufferedWriter(new OutputStreamWriter(System.out)));
Read in=new Read();
out.println("请输入id:");
out.flush();//每次打印语句后使用该方法,将缓冲的数据写到底层输出流中,不然将无法打印出来
int id=in.nextInt();
out.println("请输入姓名:");
out.flush();
String name=in.next();