Java怪问题,3行代码!

[复制链接]
查看11 | 回复5 | 2009-3-6 09:37:28 | 显示全部楼层 |阅读模式
int [] a={0,2,1,3,4};
for(Integer it:a)
a[it]=a[it]+1;
System.out.println(a[2]);
为什么打印出的是3?我这代码不应该是每个元素加1吗?读不明白,谁知道为什么?

回复

使用道具 举报

千问 | 2009-3-6 09:37:28 | 显示全部楼层
回答问题前要看清楚 问者想问的是什么?出现问题的是在哪方面..问者的问题应该是出在于为什么是3.因为他认为程序是对数组的遍历,并自增.没错.这谁都知道..但是通过 for(Integer it:a) 遍历数组时it是每个数组元素而不是下标...这就是问者搞混的问题所在..所以就会变成 a[0]自增,a[2]自增(这时a[2]变成2),接着就是a[2]自增(变成3),所以才会打印出3.这题肯定是学校里的考试题.目的在于考学者的基础知识!...
回复

使用道具 举报

千问 | 2009-3-6 09:37:28 | 显示全部楼层
不是怪问题,是你对于新的for循环不理解正确的代码应该是int[] a={0,2,1,3,4}for(Integer it:a)// 最好用intit=it+1;//注意是it而不是a[it];system.out.println(it);//it的数值就代表数组中的a[it];可以测试一下如果这样写import java.u...
回复

使用道具 举报

千问 | 2009-3-6 09:37:28 | 显示全部楼层
int [] a={0,2,1,3,4}; //这个是定义一个数组 for(Integer it:a) ////使用for遍历数组 注意它的类型是Integer a[it]=a[it]+1; //a[it]自增 System.out.println(a[2]);//it=2 a[2】自增a[2]={0,2}中 也就是a[2输出再加1 所以等于3 ...
回复

使用道具 举报

千问 | 2009-3-6 09:37:28 | 显示全部楼层
是这么运行的0 > 02 > 11 > 2 34 > 4it不是0到4 而是每个格子里的值---------囧 我错了 public class Test { public static void main(String[] args) {int[] ...
回复

使用道具 举报

千问 | 2009-3-6 09:37:28 | 显示全部楼层
int [] a={0,2,1,3,4}; for(Integer it:a) { a[it]=a[it]+1; /*当it=a[1]=2时,把a[2]的值改成了1+1即2(原a[2]的值是1)当it=a[2]时,此时的a[2]已经不再是1,而是2,所以it的值也是2,就会重新执行了a[2]=a[2]+1;//些时a[2]=2+1;...
回复

使用道具 举报

您需要登录后才可以回帖 登录 | 立即注册

本版积分规则

主题

0

回帖

4882万

积分

论坛元老

Rank: 8Rank: 8

积分
48824836
热门排行