2013-02-12 122 views
1

对于我工作的以下代码。现在的问题是如何访问for循环之外的变量字符串?谢谢。如何在java的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]); 
    } 
} 
+7

你不能。它甚至不会在循环之外产生*意义。你期望看到哪个价值? – 2013-02-12 19:03:02

+3

仅仅因为有人问这样的尴尬,不排名他。这阻碍了学习。 – 2013-02-12 19:04:21

+0

我知道我不能在loop之外访问它。是否有任何可能的方式来做到这一点? – user1949186 2013-02-12 19:06:25

回答

2

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

使用finalList打印所有字符串,即使在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); 
    } 

希望这会有所帮助。

+0

Thanx alot ...:)...以及向所有帮助我解决此问题的人提供的... – user1949186 2013-02-16 13:51:39

0

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

3

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

String[] outsideString; 

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

// This line works 
System.out.println(outsideString[0]); 
+0

'outsideString'的类型为'String','string'的类型为'String []',所以这段代码不会编译。 – jlordo 2013-02-12 19:10:21

+1

请注意,在这种情况下,您可能会在循环中多次覆盖'outsideString'。如果您认为您将需要访问您的循环处理的多个感兴趣的字符串,请使用集合,并将您想要的字符串添加到集合中。 – Aurand 2013-02-12 19:10:34

+0

@jlordo:修正了错字,谢谢。 – 2013-02-12 19:11:10

0

你不能。如果您需要从循环外的循环访问某些内容,请在循环外部创建一个String或Collection变量,并从循环内部对其进行赋值/添加。

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]); 
    } 

请记住,只有集合迭代中的最后一项才会打印在外部字符串中。

+0

当它的字符串[0] ...但是我需要字符串[0] +“”+字符串[i]在for循环之外访问时它工作正常。 – user1949186 2013-02-12 20:14:13

+0

这个字符串[0] +“”+字符串[i]被打印for循环的所有迭代? – user1760178 2013-02-12 22:02:43

+0

是的,我应该打印for循环的所有迭代。 – user1949186 2013-02-14 18:21:37