2016-02-04 4 views
-3

Привет, я пишу программу с некоторой сумасшедшей логикой, и у меня есть несколько циклов. Мне нужно получить доступ к переменной «Наборы» за пределами моего первого цикла. Как я могу это сделать?Как получить доступ к переменной за пределами цикла

class Example1 { 
    public static String sets = new String(); 

    static Set<String> reports(){ 
     try{ 
      String sets = ""; 
      fir(i=1; i<3; i++){ 
       While(bufferedReader.readLine() != null){ 
        if (condition1){ 
         if(condition2){ 
          for(condition3){ 
           if(condition4){ 
            sets = ("test1" + "test2"); 
            for(condition5){ 
             sets = sets.concat("test3"); 
            } 
           } 
          } 
         } 
        } 
       } 
      } 
     } 
    } 
    // ****** I need to access sets here ******* 
} 
+0

Используйте глобальную переменную или модулируйте код и проанализируйте его как параметр. – James

+1

Объявите переменную перед попыткой или в классе. -1 для ужасного форматирования кода. Пожалуйста, исправьте это, чтобы я мог удалить свой голос. –

+3

Отступ исправлен. Пожалуйста, поймите, что отступы есть, так что вы и кто-либо еще можете легко понять код, можете легко увидеть, к чему принадлежит код кода, - что является ключевым в понимании этой конкретной проблемы. –

ответ

3

Необходимо определить переменные, которые вы хотите использовать на уровне, который вы хотите использовать. например если вы хотите получить к ним доступ на самом внешнем уровне вашего метода, вам необходимо определить их на выходе, наиболее высоком уровне вашего метода, например. в начале метода.

BTW: Я предлагаю вам использовать форматтер в вашей среде IDE, чтобы обеспечить читаемость вашего кода. например

class Example1 { 
    static Set<String> reports() { 
     Set<String> sets = new HashSet<>(); 
     try { 
      for (int i = 1; i < 3; i++) { 
       String line; 
       while ((line = bufferedReader.readLine()) != null) { 
        if (condition1) { 
         if (condition2) { 
          for (condition3) { 
           if (condition4) { 
            sets.add("test1"); 
            sets.add("test2"); 
            for (condition5) { 
             sets.add("test3"); 
            } 

           } 
          } 
         } 
        } 
       } 
      } 
     } finally { 

     } 
     return sets; 
    } 
} 

Примечание: так как вы только обработки данных, с входом из файла и вывод набора, то весьма вероятно, что вы должны использовать Java 8 потоков, однако не ясно из вашего примера именно то, что вам пытаются сделать.

Смежные вопросы