Java数组输出出现多余0值的原因及去除方法咨询
问题分析与解决方案
为什么会出现多余的0?
你的代码里有两个核心原因导致了这些0的出现:
- 首先,
int[] array1 = new int[temp.length()];你把数组长度设成了字符串temp的总长度("1 3 5 7 6"包含5个数字和4个空格,一共9个字符)。而Java中int类型数组初始化时,所有元素的默认值都是0。 - 然后你的循环
for (int i = 0; i < temp.length(); i += 2)只给索引为0、2、4、6、8的位置赋值,剩下的索引1、3、5、7的位置没被修改,所以保留了默认的0,最终输出就带上了这些多余的0。
怎么去除这些0?
正确的思路是先把字符串按空格分割成单独的数字字符串,再转换成int数组——这样数组长度正好是数字的数量,不会有多余的空位。修改后的代码如下:
import java.util.Arrays; public class Q1102 { public static void main(String[] args) { String temp = "1 3 5 7 6"; // 按空格分割字符串,得到每个数字的字符串数组 String[] numStrs = temp.split(" "); int[] array1 = new int[numStrs.length]; // 遍历转换每个字符串为int for (int i = 0; i < numStrs.length; i++) { array1[i] = Integer.parseInt(numStrs[i]); } System.out.println(Arrays.toString(array1)); } }
运行这段代码会输出:[1, 3, 5, 7, 6],完全符合你的需求。
如果想让代码更简洁,还可以用Java 8+的流操作一行完成转换:
import java.util.Arrays; public class Q1102 { public static void main(String[] args) { String temp = "1 3 5 7 6"; int[] array1 = Arrays.stream(temp.split(" ")) .mapToInt(Integer::parseInt) .toArray(); System.out.println(Arrays.toString(array1)); } }
效果和上面的代码完全一致,写法更精炼。
内容的提问来源于stack exchange,提问作者user7590445
相关产品推荐
相关产品推荐

