"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 包,那么您必须将其注释或删除,以免得到该响应。
我收到一条错误消息,说我的文件作为标准问题丢失了。我关闭了刷新 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 包,那么您必须将其注释或删除,以免得到该响应。