【问题标题】:"File missing! "Error for USACO Java program“文件丢失!” USACO Java 程序错误
【发布时间】:2019-12-15 02:27:38
【问题描述】:

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

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();
}

}

【问题讨论】:

  • 您是否确认mixmilk.in 是您期望的位置?怎么样?
  • 你能添加完整的堆栈跟踪吗?
  • mixmilk.in 与文件在同一个项目中。它也可以在我的标准输出上完美运行

标签: java file-io filereader printwriter stringtokenizer


【解决方案1】:

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

“丢失文件”错误将由任一原因引起

new FileReader("mixmilk.in")

new FileWriter("mixmilk.out")

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

假设 #2:您的应用程序本身不会输出“文件丢失!”的错误消息,所以我假设它必须来自测试工具;即运行您的代码并测试输出的代码

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

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

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

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

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

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


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

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

【讨论】:

  • 抱歉我的描述含糊不清!问题最终与我的输出无关,但我的代码无法在环境中测试,因为我有一个默认的包声明。不过,谢谢您的意见,我会记住您的 cmets。
【解决方案2】:

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

【讨论】:

猜你喜欢
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 2014-09-29
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 2020-06-22
相关资源
最近更新 更多