package com.baidu.数组; public class Demo转换稀疏数组练习 { public static void main(String[] args) { int array1[][] = { {1,0,89}, {0,9,0,89,78,0,0,9}, {4,6,8,0,0,0,8}, {0,2,3,4,5}, {0,0,0,5}, {0,0,0,0,0,7}, {0,0,0,0,0,9}, {0,0,0,0,0,0,13}, {0,0,0,0,67,0,0,0,0}, {} };//定义一个十行九列的数组并输出 System.out.println("第一种方法输出array1:"); for (int[] ints : array1)//第一种遍历输出,结果不补零 { for (int anInt : ints) { System.out.print(anInt+"\t"); } System.out.println(); } System.out.println("=============================================="); System.out.println("第二种方法输出array1:"); for (int i = 0; i < array1.length; i++)//第二种方法遍历输出,结果一样不补零 { for (int j = 0; j < array1[i].length; j++) { System.out.print(array1[i][j]+"\t"); } System.out.println(); } System.out.println("=============================================="); System.out.println("第三种方法输出array1:"); for (int i = 0; i < 10; i++)//第三种方法遍历输出,直接给定长度,但是报错,提示数组下标越界异常。 { for (int j = 0; j < 9; j++) { System.out.print(array1[i][j]+"\t"); } System.out.println(); } } } //输出结果如下:求指点为什么输出结果不自动补零呢? /* 第一种方法输出array1: 1 0 89 0 9 0 89 78 0 0 9 4 6 8 0 0 0 8 0 2 3 4 5 0 0 0 5 0 0 0 0 0 7 0 0 0 0 0 9 0 0 0 0 0 0 13 0 0 0 0 67 0 0 0 0 ============================================== 第二种方法输出array1: 1 0 89 0 9 0 89 78 0 0 9 4 6 8 0 0 0 8 0 2 3 4 5 0 0 0 5 0 0 0 0 0 7 0 0 0 0 0 9 0 0 0 0 0 0 13 0 0 0 0 67 0 0 0 0 ============================================== 第三种方法输出array1: 1 0 89 Exception in thread "main" java.lang.ArrayIndexOutOfBoundsException: 3 at com.baidu.数组.Demo转换稀疏数组练习.main(Demo转换稀疏数组练习.java:51)*/
你要自己固定循环次数,如果没有的元素就打印一个0出来。
数组本来就只有这几个元素,方法1和方法二当然不会自动补0了。
需要补0就用方法三,加个判断 数组.length 如果数组越界就输出0就达到了你的补0需求。
非常感谢您使用有问必答服务,为了后续更快速的帮您解决问题,现诚邀您参与有问必答体验反馈。您的建议将会运用到我们的产品优化中,希望能得到您的支持与协助!
速戳参与调研>>>https://t.csdnimg.cn/Kf0y
您好,我是有问必答小助手,您的问题已经有小伙伴解答了,您看下是否解决,可以追评进行沟通哦~
如果有您比较满意的答案 / 帮您提供解决思路的答案,可以点击【采纳】按钮,给回答的小伙伴一些鼓励哦~~
ps:问答VIP仅需29元,即可享受5次/月 有问必答服务,了解详情>>>https://vip.csdn.net/askvip?utm_source=1146287632