如何修复我的 java 程序不停止 运行?
How do I fix my java program not stopping running?
我正在编写一个简单的程序作为 Java 的练习。它接受整数并将它们放入 R 行和 C 列的二维数组中,然后简单地打印出数组的每个元素(仅用于故障排除)。当我 运行 代码时,它会按应有的方式打印每个整数,但程序不会停止 运行ning。我必须强制停止它。为什么它不自行停止?我尝试了一些基本的调试,并试图查看我是否不小心在代码中出现了无限循环,但我找不到它。
以防万一,我使用的是 IntelliJ Idea Ultimate 2019.3。
谢谢
import java.util.*;
public class Main {
public static void main(String[] args) {
Scanner in = new Scanner(System.in);
int T = in.nextInt(); //Takes number of test cases
for(int i = 1; i <= T; i++){ //This is the counter for each test case
int R = in.nextInt(); //R is # of rows
int C = in.nextInt(); //C is # of columns
int K = in.nextInt(); //K is the thickness allowed
int numArray[][] = new int[R+1][C+1];
for(int j = 0; j < R; j++){
for(int k = 0; k < C; k++){
numArray[j][k] = in.nextInt();
System.out.println(numArray[j][k]);
}
}
}
in.close();
}//End of main
}//End of main class
编辑:为了将来参考,我将包括我得到的输入和输出。
输入:
3个
1 4 0
3 1 3 3
2 3 0
4 4 5
7 6 6
4 5 0
2 2 4 4 20
8 3 3 3 12
6 6 3 3 3
1 6 8 6 4
输出:
3个
1个
3个
3个
4个
4个
5个
7
6个
6个
2个
2个
4个
4个
20
8个
3个
3个
3个
12
6个
6个
3个
3个
3个
1个
6个
8个
6个
(这里光标一直在闪烁,没有做任何事情,程序也没有自行退出)
我通过手动输入而不是复制和粘贴来解决问题。不确定是什么导致了这个问题,但它起作用了!
你的 for(int i = 1; i <= T; i++) 可能更新结束,因为你正在增加 T.
您需要在循环中设置一些条件才能退出。例如
如果 (xx == yy) 中断;
这段代码要求用户输入 3 个整数(R
、C
和 K
)T
次:
int T = in.nextInt();
for(int i = 1; i <= T; i++){
int R = in.nextInt();
int C = in.nextInt();
int K = in.nextInt();
// ...
}
此外,用户必须输入整数 R*C
次,直到 i <= T
:
for(int j = 0; j < R; j++){
for(int k = 0; k < C; k++){
numArray[j][k] = in.nextInt(); // << requires user-interaction each loop here >>
System.out.println(numArray[j][k]);
}
}
如果您使用 T
=1、R
=1、C
=1、K
=1,用户只需输入 1 个额外的整数,因为只有 1 次测试重复和 R*C
= 1。您的程序按预期终止。
T
、R
、C
、K
的值越大,所需的用户交互呈指数增长,这可能让您认为您的程序应该有已结束,但它仍在等待其他用户输入。
好的,我想我明白了。我正在从网页复制和粘贴测试输入。我尝试仔细检查以确保输入有效,然后手动输入并修复它。不是 100% 的原因,但这解决了问题。感谢您的帮助!
我正在编写一个简单的程序作为 Java 的练习。它接受整数并将它们放入 R 行和 C 列的二维数组中,然后简单地打印出数组的每个元素(仅用于故障排除)。当我 运行 代码时,它会按应有的方式打印每个整数,但程序不会停止 运行ning。我必须强制停止它。为什么它不自行停止?我尝试了一些基本的调试,并试图查看我是否不小心在代码中出现了无限循环,但我找不到它。
以防万一,我使用的是 IntelliJ Idea Ultimate 2019.3。
谢谢
import java.util.*;
public class Main {
public static void main(String[] args) {
Scanner in = new Scanner(System.in);
int T = in.nextInt(); //Takes number of test cases
for(int i = 1; i <= T; i++){ //This is the counter for each test case
int R = in.nextInt(); //R is # of rows
int C = in.nextInt(); //C is # of columns
int K = in.nextInt(); //K is the thickness allowed
int numArray[][] = new int[R+1][C+1];
for(int j = 0; j < R; j++){
for(int k = 0; k < C; k++){
numArray[j][k] = in.nextInt();
System.out.println(numArray[j][k]);
}
}
}
in.close();
}//End of main
}//End of main class
编辑:为了将来参考,我将包括我得到的输入和输出。
输入: 3个 1 4 0 3 1 3 3 2 3 0 4 4 5 7 6 6 4 5 0 2 2 4 4 20 8 3 3 3 12 6 6 3 3 3 1 6 8 6 4
输出: 3个 1个 3个 3个 4个 4个 5个 7 6个 6个 2个 2个 4个 4个 20 8个 3个 3个 3个 12 6个 6个 3个 3个 3个 1个 6个 8个 6个 (这里光标一直在闪烁,没有做任何事情,程序也没有自行退出)
我通过手动输入而不是复制和粘贴来解决问题。不确定是什么导致了这个问题,但它起作用了!
你的 for(int i = 1; i <= T; i++) 可能更新结束,因为你正在增加 T.
您需要在循环中设置一些条件才能退出。例如 如果 (xx == yy) 中断;
这段代码要求用户输入 3 个整数(R
、C
和 K
)T
次:
int T = in.nextInt();
for(int i = 1; i <= T; i++){
int R = in.nextInt();
int C = in.nextInt();
int K = in.nextInt();
// ...
}
此外,用户必须输入整数 R*C
次,直到 i <= T
:
for(int j = 0; j < R; j++){
for(int k = 0; k < C; k++){
numArray[j][k] = in.nextInt(); // << requires user-interaction each loop here >>
System.out.println(numArray[j][k]);
}
}
如果您使用 T
=1、R
=1、C
=1、K
=1,用户只需输入 1 个额外的整数,因为只有 1 次测试重复和 R*C
= 1。您的程序按预期终止。
T
、R
、C
、K
的值越大,所需的用户交互呈指数增长,这可能让您认为您的程序应该有已结束,但它仍在等待其他用户输入。
好的,我想我明白了。我正在从网页复制和粘贴测试输入。我尝试仔细检查以确保输入有效,然后手动输入并修复它。不是 100% 的原因,但这解决了问题。感谢您的帮助!