代码为什么会出现奇怪的数据?

题目描述

Java 数组扩容问题:实现动态的给数组添加元素效果,实现对数组扩容
原始数组 int[] arr = {1,2,3}
增加的元素 4,直接放在数组的最后 arr = {1,2,3,4}

题目来源及自己的思路

  1. 定义 arr1
  2. 定义 arr2,比 arr1 的长度长 1
  3. arr1 的长度内,把 arr1 的值赋值给 arr2
  4. arr2 的最后一个位置赋值为 4,也就是要加入的数据
  5. 因为 arr2 是临时的,最终要改变的是 arr1
    所以需要把 arr2 的值赋值给 arr1
  6. arr2 的值覆盖 arr1
  7. 输出查看效果

相关代码

public class AddJavaJava {
    public static void main(String[] args) {
        //定义arr1
        int arr1[] = {1,2,3};
        //定义arr2,比arr1a的长度长1
        int arr2[] = new int[arr1.length+1]; 

        //在arr1的长度内,把arr1的值赋值给arr2
        for(int i = 0;i<arr1.length;i++) {
            arr2[i] = arr1[i];
        }
        arr2[arr2.length-1] = 4;//arr2的最后一个位置赋值为4,也就是要加入的数据

        //因为arr2是临时的,最终要改变的是arr1.
        //所以需要把arr2的值赋值给arr1。
        //用arr2的值覆盖arr1
        arr1 = arr2;
        for(int i =0;i< arr1.length;i++) {
            System.out.println(arr1[i]+'\t');
        }
    } 
}

你期待的结果是什么?实际看到的错误信息又是什么?

期待值:1 2 3 4
实际值:10 11 12 13

阅读 1.1k
1 个回答

数组里面的值的确是1,2,3,4, 只不过你打印出的值是10,11,12,13

//用arr2的值覆盖arr1
arr1 = arr2;
for(int i =0;i< arr1.length;i++) {
-    System.out.println(arr1[i]+'\t');
+    System.out.println(arr1[i]);
}

/t 转成数字就是9, 1,2,3,4 加上9就是你之前输出的结果

System.out.println((int)'\t'); // 9

https://baike.baidu.com/item/ASCII/309296?fr=ge_ala

撰写回答
你尚未登录,登录后可以
  • 和开发者交流问题的细节
  • 关注并接收问题和回答的更新提醒
  • 参与内容的编辑和改进,让解决方法与时俱进
推荐问题