有 Java 编程相关的问题?

你可以在下面搜索框中键入要查询的问题!

java For循环(元素:集合)未进行永久更改

当使用for循环using(element:collection)遍历集合时,我对数据所做的更改仅在循环期间保持不变

这是我的密码:

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

我的问题是使用这种类型的循环如何进行永久性更改


共 (3) 个答案

  1. # 1 楼答案

    使用增强循环无法实现这一点。你需要传统的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. # 2 楼答案

    您可以使用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());
    }
    
  3. # 3 楼答案

    循环(元素:Collection)称为增强的for循环。ehanced for循环维护一个迭代器,不允许删除对象,也不允许显式使用迭代器

    实现理想结果的方法是通过标准循环:

    for(int i=0; i<names.length;i++)
    {   
        names[i] = names[i].toUpperCase();
        System.out.println(names[i]);
    }