代码为什么会出现奇怪的数据?
题目描述
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,2,3,4, 只不过你打印出的值是10,11,12,13
//用arr2的值覆盖arr1arr1 = 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
以上是 代码为什么会出现奇怪的数据? 的全部内容, 来源链接: utcz.com/p/945352.html