2

对于我处理的以下代码。现在的问题是如何在 for 循环之外访问变量字符串?谢谢。

for (String[] string: arr) {
    if(string.length == 1)
    { 
        System.out.println(string[0]);
        continue;
    }
    for (int i = 1; i < string.length; i++)  {
        System.out.println(string[0] + " " + string[i]);
    }
}
4

5 回答 5

3

您的string变量是本地范围的,并且只存在于循环中。您需要先定义一个外部String[]变量,然后在循环中对该变量进行赋值:

String[] outsideString;

for (String[] string: arr) {
  ...
  outsideString = string;
  ...
}

// This line works
System.out.println(outsideString[0]);
于 2013-02-12T19:08:34.010 回答
2

以下解决方案为您提供了所有打印的字符串的数组列表。这提供了一个使用字符串数组逻辑创建的数组列表,以便在for loop.

即使在for loop.

ArrayList<String> finalList = new ArrayList<String>();

    for (String[] string: arr) {

        if(string.length == 1)
        { 
            System.out.println(string[0]);
            finalList.add(string[0]);
            continue;
        }
        for (int i = 1; i < string.length; i++)  {
            System.out.println(string[0] + " " + string[i]);                
            finalList.add(string[0] + " " + string[i]);
        }   
    }

    for(String output: finalList){
        System.out.println(output);
    }

希望这可以帮助。

于 2013-02-14T20:30:13.413 回答
0

你不能给出这个代码。在顶部的增强 for 循环中,您只能使用该 for 循环的局部变量

于 2013-02-12T19:03:03.457 回答
0

你不能。如果您需要从循环外部的循环访问某些内容,请在循环外部创建一个字符串或集合变量,并从循环内部对其进行分配/添加。

于 2013-02-12T19:08:50.347 回答
0

试试这个。

String[] outerString  = {}; 

    for (String[] string: arr) {
        outerString = string;
        if(string.length == 1)
        { 
            System.out.println(string[0]);
            continue;
        }
        for (int i = 1; i < string.length; i++)  {
            System.out.println(string[0] + " " + string[i]);
        }   
    }

    if(outerString.length > 0){
        System.out.println(outerString[0]);
    }

请记住,只有 Collection 迭代中的最后一项将打印在外部字符串中。

于 2013-02-12T19:19:52.503 回答