代码为什么会出现奇怪的数据?
题目描述
Java 数组扩容问题:实现动态的给数组添加元素效果,实现对数组扩容原始数组 int[] arr = {1,2,3}
增加的元素 4
,直接放在数组的最后 arr = {1,2,3,4}
题目来源及自己的思路
- 定义
arr1
- 定义
arr2
,比arr1
的长度长1
- 在
arr1
的长度内,把arr1
的值赋值给arr2
arr2
的最后一个位置赋值为4
,也就是要加入的数据- 因为
arr2
是临时的,最终要改变的是arr1
,所以需要把arr2
的值赋值给arr1
。 - 用
arr2
的值覆盖arr1
- 输出查看效果
相关代码
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个回答

test
2024-06-26
数组里面的值的确是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
回复

适合作为回答的
- 经过验证的有效解决办法
- 自己的经验指引,对解决问题有帮助
- 遵循 Markdown 语法排版,代码语义正确
不该作为回答的
- 询问内容细节或回复楼层
- 与题目无关的内容
- “赞”“顶”“同问”“看手册”“解决了没”等毫无意义的内容