尽管正确打印出所有输出,但程序未在 Java 中以退出代码 0 结束
Posted
技术标签:
【中文标题】尽管正确打印出所有输出,但程序未在 Java 中以退出代码 0 结束【英文标题】:Program does not finish with exit code 0 in Java despite printing out all output properly 【发布时间】:2020-04-04 01:23:20 【问题描述】:所以,我正在做一个竞争性编程问题,当我提交我的代码时,它说我遇到了运行时错误。我认为这是因为一旦程序编译并运行,我的代码就不会输出“以退出代码 0 退出”。在 IntelliJ 上,打印了正确的输出,但再一次,它并没有说代码已经以“退出代码 0”退出。
这是代码。
import java.util.Arrays;
import java.util.Scanner;
class Main
public static void main(String[] args)
Scanner kb = new Scanner(System.in);
int testCases = kb.nextInt();
for (int i = 0; i < testCases; i++)
int N = kb.nextInt();
int trace = 0;
int[][] grid = new int[N][N];
for (int j = 0; j < N; j++)
for (int k = 0; k < N; k++)
grid[j][k] = kb.nextInt();
if(j == k)
trace += grid[j][k];
int rowsWithASameNumber = 0, columnsWithASameNumber = 0;
for (int j = 0; j < N; j++)
int[] row = new int[N];
for (int k = 0; k < N; k++)
row[k] = grid[j][k];
Arrays.sort(row);
for (int k = 0; k < N - 1; k++)
if(row[k] == row[k + 1])
rowsWithASameNumber++;
break;
for (int j = 0; j < N; j++)
int[] row = new int[N];
for (int k = 0; k < N; k++)
row[k] = grid[k][j];
Arrays.sort(row);
for (int k = 0; k < N - 1; k++)
if(row[k] == row[k + 1])
columnsWithASameNumber++;
break;
System.out.println("Case #" + (i + 1) + ": " + trace + " " + rowsWithASameNumber + " " + columnsWithASameNumber);
想知道我是否遗漏了一些非常明显的东西,或者问题是否与退出代码 0 无关?感谢您的帮助!
【问题讨论】:
不,这是因为您遇到了运行时错误,即RuntimeException
,无论他们提供什么输入。与退出代码无关,此程序为零,因为您没有调用System.exit()
。任何普通的 Java 程序都不会打印“退出代码 0”。
我的猜测是您没有正确读取输入(读取超过输入末尾,或者令牌不是整数)。您可以放置 `try
块来捕获意外异常 - 测试输出将为您提供一点信息。或者早点退出。
@Dinesh Polisetty 请提供输入和输出示例以及您获得的堆栈跟踪,以便我们尝试帮助您。哦,别忘了总是关闭扫描仪! kb.close();
@user207421 - 这正是我在回答中提到的。如果它不打印它,那么它并没有停止执行。我看不出有什么理由不赞成这个答案?
@user207421 - 我们没有看到任何运行时错误。他只是说他将它提交给了一些比赛,并得到了一个运行时错误的答复。我不知道那是什么意思,你也不知道。 IntelliJ 不报错也很奇怪。
【参考方案1】:
在 IntelliJ 上,会打印正确的输出,但再一次,它并没有说 >code 已经以“exit code 0”退出。
可能,这意味着你的程序没有退出。
【讨论】:
@user207421 - 好吧,如果他的程序没有正确退出,我会称之为运行时错误 没有退出怎么办? 如果这是问题,我应该怎么做才能退出代码? “不退出”和“不正确退出”之间存在很大差异。显然它没有正确退出,但这不是你在答案中写的:如果这是你要写的,你只会重复问题中已经存在的信息,而不是提供解决方案。 如果程序真的没有终止,您应该提供一个诊断,说明为什么不终止,并提供解决方案。我看不出为什么这会永远循环。你的解释?以上是关于尽管正确打印出所有输出,但程序未在 Java 中以退出代码 0 结束的主要内容,如果未能解决你的问题,请参考以下文章
尽管程序给出了正确的输出,但 clGetProgramBuildInfo 返回 CL_BUILD_NONE
Android 应用程序未在 Eclipse 中以调试模式完成启动
我得到了所需的输出,但它仍然抛出一个错误,说“未找到用于打印的 glyphicon”,尽管打印 glyphicon 在输出中可见
我正在尝试将 1020 乘以 275 次方,并将其修改为 1073,但 java 不会输出正确的答案