当前位置: 首页 > 图灵资讯 > 技术篇> Java数组扩容后输出结果异常:为什么我的程序打印出10 11 12 13而不是1 2 3 4?

Java数组扩容后输出结果异常:为什么我的程序打印出10 11 12 13而不是1 2 3 4?

来源:图灵教育
时间:2025-03-14 16:23:50

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。

Java数组扩容后输出结果异常:为什么我的程序打印出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.详情请关注图灵教育的其他相关文章!