首页 > 学院 > 开发设计 > 正文

POJ初探

2019-11-06 07:13:42
字体:
来源:转载
供稿:网友

前言tips

前言

刚试着用java做了poj(北大ACM)的1001,代码在这里,希望能做点小小的贡献,下面说一下用java做poj的几个注意事项。

tips

java文件的主类,也就是含main方法的类,一定要命名为Main, 就是下面这样class Main{ public static void main(String[] args) throws IOException { }}

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() ); }Created with Raphaël 2.1.0开始st.nextToken()读取一个字符片段st.nextToken() == st.TT_EOF是否读到文件尾?结束yesno

通过nextToken()的返回值判断读取到的是什么

TT_EOF,代表读到文件尾,进行结束操作TT_EOL,读到行末TT_Word,读取到字符串,通过st.sval(String)读取TT_NUMBER,读取到数字,通过st.nval(double)读取 使用后比Scanner读取要快50ms左右。
发表评论 共有条评论
用户名: 密码:
验证码: 匿名发表