当使用for循环使用(element:collection)使用for循环进行集合时,我对数据所做的更改仅在循环期间保持不变。
这是我的代码:
String[] names = {"bob", "fred", "marcus", "robert", "jack", "steve", "nathan", "tom", "freddy", "sam"};
for(String indexData : names)
{
indexData = indexData.toUpperCase();
System.out.println(indexData);
}
System.out.println("this is word 5 in the array: " + names[4]);
输出:
BOB
FRED
MARCUS
ROBERT
JACK
STEVE
NATHAN
TOM
FREDDY
SAM
this is word 5 in the array: jack
我的问题是使用这种类型的循环如何进行永久性更改?
答案 0 :(得分:3)
循环(Element:Collection)称为增强for循环。 ehanced for循环维护一个迭代器,不允许删除对象,或显式使用迭代器。
实现所需结果的方法是通过标准循环:
for(int i=0; i<names.length;i++)
{
names[i] = names[i].toUpperCase();
System.out.println(names[i]);
}
答案 1 :(得分:0)
你不能用增强的循环来做到这一点。你需要Traditional for循环。indexData = indexData.toUpperCase();
只改变局部变量indexData
。它不会影响你的数组元素。
关注Traditional for loop
将更改您的数组
String[] names = {"bob", "fred", "marcus", "robert", "jack", "steve", "nathan", "tom", "freddy", "sam"};
for(int i=0;i<names.length;i++) {
names[i]= names[i].toUpperCase();
System.out.println(indexData);
}
System.out.println("this is word 5 in the array: " + names[4]);
答案 2 :(得分:0)
您可以使用ListIterator
:
String[] names = {"bob", "fred", "marcus", "robert", "jack", "steve", "nathan", "tom", "freddy", "sam"};
ListIterator<String> iterator = Arrays.asList(names).listIterator();
while (iterator.hasNext()) {
String name = iterator.next();
iterator.set(name.toUpperCase());
}