写在前边:本篇博客仅是本菜鸟经验之谈,不保证正确性!找解答者请另寻高明qaq
StreamTokenizer实现了控制台输入数据读取速度的优化。这个类其中一个构造函数是StreamTokenizer(String str)。注意每一次调用in对象的nval变量时,都要先调用一下nextToken()方法。如果将控制台int类型的数字直接用nextToken()方法赋值给Int变量,会出现转码错误。
还有,这个程序还有能优化的地方吗?有两个例子超时,我枯了。
import java.io.BufferedReader;
import java.io.IOException;
import java.io.InputStreamReader;
import java.io.OutputStreamWriter;
import java.io.PrintWriter;
import java.io.StreamTokenizer;
import java.util.Arrays;
public class L201 {
public static void main(String args[]) throws IOException {
StreamTokenizer in=new StreamTokenizer(new BufferedReader(new InputStreamReader(System.in)));
PrintWriter out=new PrintWriter(new OutputStreamWriter(System.out));
//Scanner sc=new Scanner(System.in);
in.nextToken();
int N=(int)in.nval;
int Out=0;
int In=0;
int Outgoing=0,Introverted=0;
int[] a=new int[N];
for(int i=0;i<N;i++) {
in.nextToken();//每一次调用in对象的nval变量时,都要先调用一下nextToken()方法。
a[i]=(int)in.nval;
}
Arrays.sort(a);
Introverted=N/2;
Outgoing=N-Introverted;
for(int i=0;i<N/2;i++) {
In+=a[i];
}
for(int i=N/2;i<N;i++) {
Out+=a[i];
}
int Diff=Out-In;
out.println("Outgoing #: "+Outgoing+"\n"+"Introverted #: "+Introverted+"\n"+"Diff = "+Diff);
out.flush();
}
}