"File missing! "USACO Java 程序错误

"File missing! "Error for USACO Java program

我收到一条错误消息,说我的文件作为标准问题丢失了。我关闭了刷新 FileReader 的文件,使问题更加模糊。我尝试使用 BufferedWriter、FileOutputStream 和 DataOutputStream.The 的不同输出方法,输出是正确的,因为它与所有给定的测试用例相匹配。任何输入都是有帮助的。谢谢。

public static void main(String[] args) throws Exception {

    BufferedReader br = new BufferedReader(new FileReader("mixmilk.in"));   
    PrintWriter pw = new PrintWriter(new BufferedWriter(new FileWriter("mixmilk.out")));
    StringTokenizer st = new StringTokenizer(br.readLine());

    int c1 = Integer.parseInt(st.nextToken());
    int m1 = Integer.parseInt(st.nextToken());
    st = new StringTokenizer(br.readLine());
    int c2 = Integer.parseInt(st.nextToken());
    int m2 = Integer.parseInt(st.nextToken());
    st = new StringTokenizer(br.readLine());
    int c3 = Integer.parseInt(st.nextToken());
    int m3 = Integer.parseInt(st.nextToken());

    if (m1 + m2 <= c2) {
        m2 = m1 + m2;
        m1 = 0;
    }
    else {
        while (m2 < c2) {
            m2++;
            m1--;
        }
    }

    if (m2 + m3 <= c3) {
        m3 = m2 + m3;
        m2 = 0;
    }
    else {
        while (m3 < c3) {
            m3++;
            m2--;
        }
    }

    if (m3 + m1 <= c1) {
        m1 = m3 + m1;
        m3 = 0;
    }
    else {
        while (m1 < c1) {
            m1++;
            m3--;
        }
    }

    if (m1 + m2 <= c2) {
        m2 = m1 + m2;   
        m1 = 0;
    }
    else {
        while (m2 < c2) {
            m2++;
            m1--;
        }
    }

    System.out.println(m1);
    System.out.println(m2);
    System.out.println(m3); //what im printing to the file 
    pw.println(m1);
    pw.println(m2);
    pw.println(m3);
    pw.println("\n"); // recommended due to new UNIX environment for grading servers
    pw.close();
}

}

您没有提供足够的信息(堆栈跟踪、错误消息、样本输入等)所以我将不得不求助于大量的猜测 (!!)

"missing file" 错误将由

new FileReader("mixmilk.in")

new FileWriter("mixmilk.out")

假设 #1:我假设您没有提供堆栈跟踪,因为根本没有。

假设 #2:您的应用程序本身不会输出显示 "File missing!" 的错误消息,因此我假设它一定来自测试工具;即代码 运行 您的代码并测试输出

假设 #3:测试工具将提供自己的输入文件,因此不太可能抱怨文件丢失。因此,它一定是在抱怨它找不到您的应用程序应该写入的文件。

这意味着new FileWriter("mixmilk.out")是错误的。这里有一些可能性:

  • 您使用了错误的文件名;例如也许文件扩展名不正确,或者文件名应该是 "MixMilk.out" 之类的。 (注意 Linux / UNIX 文件名区分大小写。)

  • 您的应用程序将尝试将文件写入当前目录。也许那是不正确的。也许它应该写在别的地方;例如一个临时目录。

  • 也许您的应用程序根本不应该读写文件。也许它应该读写标准input/output?也许文件名/路径名应该是命令行参数?

所有这些归结为你没有完全理解作业的要求。 (我只能猜测......因为你没有包含要求!)


另一种可能是您的问题中的某些信息不准确。例如,我假设 1) 错误消息是 "File missing!" 就像你告诉我们的那样,并且 2) 没有堆栈跟踪...因为当有人要求你添加堆栈跟踪时你没有响应!

最后一种可能性是问题出在测试工具中(即错误)或者需求不明确。与其他做作业的学生交谈。

如果您的代码中有一个包,例如 USACO 包,那么您必须将其注释或删除,以免得到该响应。