Java中Jagged Array与嵌套for循环运行不退出问题排查
问题原因
- 数组声明错误:你当前写的
int[][] num2d = new int[4][3];是规则二维数组,含义是共4行、每行固定3个元素,总共有12个存储位,你的嵌套循环会遍历所有12个位置,要求你输入12个整数才会终止。你只输入了7个,程序会一直等待剩余输入,看起来就像卡在了循环里。 - 交错数组声明逻辑错误:你需要的是2行、第一行4列、第二行3列的交错数组,声明方式完全不同,需要先指定行数,再单独给每一行指定长度。
- 取消break后的问题:break写在内层循环中,每次内层循环执行1次就直接跳出,所以外层循环运行4次、仅读取4个输入就会终止,无法读取全部7个数字。
修复方案
不用加break,只要把数组声明改成正确的交错数组格式即可,完整可运行代码如下:
import java.util.Scanner; public class TestCode { public static void main(String[] args) { //创建Scanner对象 Scanner userInput = new Scanner(System.in); //声明交错数组:共2行 int[][] num2d = new int[2][]; //分别初始化每行的长度:第一行4列,第二行3列 num2d[0] = new int[4]; num2d[1] = new int[3]; int i; int j; System.out.print("Enter seven numbers: "); //遍历数组读取输入 for (i = 0; i < num2d.length; i++) { for (j = 0; j < num2d[i].length; j++) { num2d[i][j] = userInput.nextInt(); System.out.println(num2d[i][j]); } } userInput.close(); } }
修改后程序总计只需要读取7个输入,输入完成后自动终止循环,正常输出BUILD SUCCESSFUL提示。
内容的提问来源于stack exchange,提问作者eborgard
相关产品推荐
相关产品推荐

