Java数组扩展和异常输出:为何打印结果为10?、11、12、13而不是1、2、3、4?
本文分析了Java数组扩展示例中的异常输出问题。该程序旨在动态地向数组添加元素,但输出结果与预期不一致。
问题描述: 该程序旨在向初始数组int[]添加元素4 arr = {1, 2, 3}的末尾,让它变成 {1, 2, 3, 4}。通过创建新数组,复制原数组元素,添加新元素,然后将新数组赋值给原数组变量,扩展程序容量。然而,程序输出的结果是10、11、12、13,而不是预期的1、2、3、4。
代码分析: 程序扩展逻辑本身是正确的。问题在于输出语句System.out.println(arr1[i] + ' ');制表符在制表符中使用 "." “隐式转换为其ASCII码值(9),导致arr1实际执行。[i] + 9,从而输出10、11、12、13。
立即学习“Java免费学习笔记(深入);
代码片段错误:
public class AddToArray { public static void main(String[] args) { int arr1[] = {1, 2, 3}; int arr2[] = new int[arr1.length + 1]; for (int i = 0; i < arr1.length; i++) { arr2[i] = arr1[i]; } ar2[arr1.length] = 4; arr1 = arr2; // 关键:将新数组赋值给原数组变量 for (int i = 0; i < arr1.length; i++) { System.out.println(arr1[i] + ' '); // 错误:这里加了制表符 } } }
解决方案: 为了得到正确的结果,只需修改输出语句并删除制表符:
System.out.println(arr1[i]); // 正确:去除制表符
修改后的代码:
public class AddToArray { public static void main(String[] args) { int arr1[] = {1, 2, 3}; int arr2[] = new int[arr1.length + 1]; for (int i = 0; i < arr1.length; i++) { arr2[i] = arr1[i]; } ar2[arr1.length] = 4; arr1 = arr2; for (int i = 0; i < arr1.length; i++) { System.out.println(arr1[i]); // 修正后的输出语句 } } }
修正后的代码将正确打印1、2、3、4。 本例强调,在Java中进行字符串连接和数值操作时,应注意数据类型转换和隐式类型转换带来的潜在问题。
以上是Java数组扩展后的异常输出结果:为什么我的程序打印出10? 11 12 13而不是1 2 3 4.详情请关注图灵教育的其他相关文章!
