java - "File missing! "USACO Java 程序错误

标签 java file-io filereader printwriter stringtokenizer

我收到一条错误消息,提示我的文件作为标准问题丢失。我已经关闭了刷新 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();
}

}

最佳答案

您没有提供足够的信息(堆栈跟踪、错误消息、示例输入等),因此我将不得不进行大量猜测(!!)

“丢失文件”错误可能是由以下原因引起的

new FileReader("mixmilk.in")

new FileWriter("mixmilk.out")

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

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

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

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

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

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

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

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

<小时/>

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

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

关于java - "File missing! "USACO Java 程序错误,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/59340778/

相关文章:

Java Getter 和 Setter

java - 让标签图标出现在文本上方

javascript - Nodejs 每次响应发送多个文件

c - 每次调用函数时读取文件的下一行

java - bufferedreader 和 filereader 的具体区别

javassist,获取doGet方法的第二个参数

java - NDK 找不到标准 C++ 库

java - 在 cpu 和空间低的 java (android) 中保存 short[]

python - 有没有办法知道函数中传递了多少个参数?

javascript - FileReader onloadend 中循环变量的值