3个回答
展开全部
1、那些不是乱码,是内存地址
2、foreach语句每次遍历都重建i数组,i是数组,而不是你期望的数组的值1234567。
遍历时,第一次进入循环语句,在内存中创建了一个数组类型的数据结构,这个数组的值是1234567,然后把这块内存的首地址赋值给变量i,所以i中存储的是一个内存地址,然后打印出来的自然是内存地址,本次循环结束,回收内存。第二次进入循环,在内存中又创建了一个数组类型的数据结构,这个数组的值是1234567,然后把这块内存的首地址复制给变量i,如此循环。每次都是重新创建数组,所以内存地址不一样,你所谓的“乱码”也不一样。其实那是一大堆十六进制的数字。
3、可以这么写,或者用传统for语句,或者维持你的思路不变,把i变量提出去,每次加1
第一种写法:
for(int i=0;i<carsForRent.length;i++){
System.out.println((i+1)+"\t"+carsForRent[i].getName());
}
第二种写法:
int i=1;
for(Car currentCar:carsForRent){
System.out.println(i+"\t"+currentCar.getName());
i++;
}
展开全部
您好,看来一下您的代码,是因为序号的数组是在循环体内定义的,所以每次输出都是对象的地址,而不是值。您可以这样修改一下:
int[] i = {1, 2, 3, 4, 5, 6, 7};
int k = 0;
for(Car currentCar : carsForRent){
System.out.println(i[k++]);
// 打印其他的内容
}
已赞过
已踩过<
评论
收起
你对这个回答的评价是?
2016-05-12
展开全部
你代码里面的'i'是一个数组,你直接输出来数组是不行的。
追问
那想要输出1234567应该怎么修改哦
已赞过
已踩过<
评论
收起
你对这个回答的评价是?
推荐律师服务:
若未解决您的问题,请您详细描述您的问题,通过百度律临进行免费专业咨询