我已经寻找了很长时间的解决方案,但令人惊讶的是似乎没有人在我之前遇到过这个问题。
Google Code Jam将输入内容作为.in
文件提供。我查看了解决方案,以了解人们如何处理这种输入。我将解决方案复制到eclipse并将.in
文件作为输入,但控制台保持空白,我想这意味着扫描仪无法将.in
文件作为常规输入读取。如何从.in
文件中直接蚀蚀输入?
这是用于读取输入的代码(再次,直接在.in
文件上尝试时不起作用)。
public class A {
public static void main(String[] args){
Scanner in = new Scanner(System.in);
int numberOfCases = in.nextInt();
int next = in.nextInt();
//some unimportant piece of code
System.out.format("Case #%d: %d\n", currentCase, max(bTime, oTime));
}
}
我只缩短了与该问题有关的部分的代码。您可以在http://www.go-hero.net/jam/11/name/theycallhimtom(在“ Bot Trust”-> S下)中看到完整的答案。
System.in
代表标准输入,这意味着通常是从键盘读取的。因此,如果您启动程序,然后.in
在控制台窗口中键入整个文件,它将可以正常工作。
但是您不必每次都键入文件,而是可以重定向输入以从.in
文件而不是键盘读取。据我所知,在Eclipse中没有这样做的选择,但是您可以通过在命令行中执行以下操作:<
在常规命令后附加文件名,以启动程序。整个命令可能类似于:
java -jar A.jar < A-small.in
另一个选择是将输入文件的名称作为程序的参数(这就是您使用的Eclipse选项的作用)。这些参数可以从args
您的main
方法的参数中访问。为此,您实际上必须告诉Scanner
使用该文件:
Scanner in = new Scanner(new File(args[0]));
还有一种选择是对文件名进行硬编码:
Scanner in = new Scanner(new File("A-small.in"));
在任何类型的生产代码中,以这种方式执行此操作都将视为不良做法,但对于编程竞赛来说可能是可以的。
本文收集自互联网,转载请注明来源。
如有侵权,请联系[email protected] 删除。
我来说两句