前言tips
刚试着用java做了poj(北大ACM)的1001,代码在这里,希望能做点小小的贡献,下面说一下用java做poj的几个注意事项。
2 .
InputT输入包括多组 R 和 n。 R 的值占第 1 到第 6 列,n 的值占第 8 和第 9 列。Sample Input95.123 120.4321 205.1234 156.7592 998.999 101.0100 12对于这样的多组输入,采用下面的方法读取不会报错,也就是返回runtime error
Scanner in = new Scanner(System.in); while (in.hasNext()) { double R = in.nextDouble(); int n = in.nextInt(); }3 . 对于时间要求高的题目,换一种输入方式能起到很好的效果,这就是使用StreamTokenizer类(java.io.StreamTokenizer),使用方法如下
public static void main(String[] args) throws IOException { StreamTokenizer st = new StreamTokenizer( new BufferedReader( new InputStreamReader( System.in ) ) ) ; double R = 0; int n = 0; while ( true ) { if ( st.nextToken() != st.TT_EOF ) R = ( double )st.nval; else break; if ( st.nextToken() != st.TT_EOF ) n = ( int )st.nval; else break; System.out.PRintln( new StringRealNumber( R ).power( n ).display() ); }通过nextToken()的返回值判断读取到的是什么
TT_EOF,代表读到文件尾,进行结束操作TT_EOL,读到行末TT_Word,读取到字符串,通过st.sval(String)读取TT_NUMBER,读取到数字,通过st.nval(double)读取 使用后比Scanner读取要快50ms左右。新闻热点
疑难解答