2 qq773968 qq773968 于 2016.09.19 14:51 提问

ArrayList的foreach方法,中间两天不知道为什么无效--

为什么中间两条foreach语句无效1111111111111111111111111111111111111

5个回答

seeze
seeze   2016.09.19 15:20

并没有这么用过,只能试着解释一下:

str1->str1.toUpperCase()操作后的值并没有赋给str1,相当于直接写了一句str1.toUpperCase();应该不会改变其值
key++这个问题就大了,如果能自增,岂不是会进入死循环?如果不是语法错误,那就是forEach自身做的保护,可能你得到的key只是一个临时变量,不会改变容器中的元素值(没试过不能确定)

seeze
seeze 回复qq773968: 在循环中修改索引号本身是种不正常的行为,正确做法应该是先移除key再添加一个,所以不想多去研究为什么不行了。至于str1那个,改成str1->str1=str1.toUpperCase();应该可以吧
大约一年之前 回复
qq773968
qq773968 回复qq773968: 但我感觉key++应该没问题,foreach是没有一个对象就调用方法,所以应该只是key的值自增一次,但不明白为什么key值没变,估计也是参数传递问题。如果死循环应该会报错
大约一年之前 回复
qq773968
qq773968 感觉你说的应该是对的,JAVA的参数传递问题,传给形参后,实参的值没改变
大约一年之前 回复
qq773968
qq773968   2016.09.19 14:52

图片说明

shihengzhen101
shihengzhen101   Rxr 2016.09.19 15:02

你这代码好高端,我的java只学了一点点,帮不到你了

qq_19394755
qq_19394755   2016.09.19 15:24

forEach也是有system.out.print()的功能?

qq773968
qq773968 foreach应该是遍历,里面的输出是对每个对象调用的方法
大约一年之前 回复
qq773968
qq773968   2016.09.19 15:40

图片说明
感谢,是参数传递问题

Csdn user default icon
上传中...
上传图片
插入图片
准确详细的回答,更有利于被提问者采纳,从而获得C币。复制、灌水、广告等回答会被删除,是时候展现真正的技术了!