JAVA forreach语句问题

代码是这样,可为什么序号是一串乱码,其他的都是对的?... 代码是这样,

可为什么序号是一串乱码,其他的都是对的?
展开
 我来答
ch___hc
2016-05-12 · TA获得超过138个赞
知道答主
回答量:56
采纳率:100%
帮助的人:20.4万
展开全部

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++;
 }
单v纯微笑
2016-05-12 · 超过30用户采纳过TA的回答
知道答主
回答量:69
采纳率:85%
帮助的人:43.8万
展开全部

您好,看来一下您的代码,是因为序号的数组是在循环体内定义的,所以每次输出都是对象的地址,而不是值。您可以这样修改一下:

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应该怎么修改哦
已赞过 已踩过<
你对这个回答的评价是?
评论 收起
收起 更多回答(1)
推荐律师服务: 若未解决您的问题,请您详细描述您的问题,通过百度律临进行免费专业咨询

为你推荐:

下载百度知道APP,抢鲜体验
使用百度知道APP,立即抢鲜体验。你的手机镜头里或许有别人想知道的答案。
扫描二维码下载
×

类别

我们会通过消息、邮箱等方式尽快将举报结果通知您。

说明

0/200

提交
取消

辅 助

模 式