代码为什么会出现奇怪的数据?
题目描述
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 语法排版,代码语义正确
不该作为回答的
- 询问内容细节或回复楼层
- 与题目无关的内容
- “赞”“顶”“同问”“看手册”“解决了没”等毫无意义的内容