如何在GoogleCodeJam中使用.in文件作为eclipse的输入



我已经寻找了很长时间的解决方案,但令人惊讶的是,在我之前似乎没有人遇到过这个问题。

Google Code Jam将输入作为.in文件。我查看了解决方案,看看人们是如何处理这种输入的。我将解决方案复制到eclipse,并将.in文件作为输入,但控制台保持空白,我想这意味着扫描仪无法将.in文件作为正常输入读取。如何在eclipse中直接从.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: %dn", currentCase, max(bTime, oTime));
        }
    }

我只缩短了与问题有关的部分的代码。你可以在上看到完整的答案http://www.go-hero.net/jam/11/name/theycallhimtom(在"Bot Trust"->S下)。

这是我所做的…

    File file = new File("F:\A-small-practice.in");
    File outFile = new File("F:\A-small-practice.out");
    BufferedReader br = new BufferedReader(new FileReader(file));
    BufferedWriter bw = new BufferedWriter(new FileWriter(outFile));
    int testCases = Integer.parseInt(br.readLine());
    for(int t=1;t<=testCases;t++){
        /*
         * Your code here
         */
        bw.write("Case #" + t +": Yes I did itn");
    }
    br.close();
    bw.close();

我在F驱动器中下载.in文件,然后访问它,在其中写入.out文件。

System.in表示标准输入,这意味着它通常是从键盘上读取的。因此,如果您启动程序,然后在控制台窗口中键入整个.in文件,它就会工作。

但您不想每次都键入文件,而是可以将输入重定向为从.in文件而不是键盘读取。据我所见,在Eclipse中没有这样做的选项,但您可以从命令行执行,方法是将<后面跟着文件名附加到启动程序的普通命令中。整个命令可能看起来像:

java -jar A.jar < A-small.in

另一个选项是将输入文件的名称作为程序的参数(这就是Eclipse选项的作用)。可以从main方法的args参数访问这些参数。要这样做,实际上必须告诉Scanner使用该文件:

Scanner in = new Scanner(new File(args[0]));

另一种选择是对文件名进行硬编码:

Scanner in = new Scanner(new File("A-small.in"));

在任何类型的生产代码中,这样做都会被认为是一种糟糕的做法,但对于编程竞赛来说,这可能还可以。

最新更新