2016-02-02 198 views
-4

我需要在第一個for循環之外訪問'sets'。我怎樣才能做到這一點? 我想對結果進行排序,但我不打包訪問for循環外部的結果集。如果我在裏面排序,我沒有按預期得到排序結果。如何訪問循環外的變量?

static Set <String> generateReports() { 
    try { 
     String[] parts2; 
     String part2 = null; 
     String[] parts3; 
     String part3 = null; 
     // String sets = null; 
     for (i = 1; i < 3; i++) { 
      String line = null; 

      FileReader fileReader1 = new FileReader("C:/Projects/Wells Fargo IVR/TestFolder/" + (i) + ".log"); 
      BufferedReader bufferedReader1 = new BufferedReader(fileReader1); 

      while ((line = bufferedReader1.readLine()) != null) { 

       String string = line; 

       parts2 = string.split("-"); 
       if (parts2.length > 4) { 
        part2 = parts2[4]; 
        sids.put(part2, line); 
        // System.out.println(sids.get(part2)); 
       } 
       // if(IVRLogFileMerge.getSid().contains(part2)){ 
       if (testSet.contains(part2)) { 

        // System.out.println("This is file number" + (i)+ " " + line); 

        for (String current: testSet1) { 
         if (line.contains(current)) { 
          //System.out.println(line); 
          testSetFinal.add(line); 


          String string1 = line.replace(" ", " "); 
          String string2 = string1.replace("default task", "Thread"); 
          parts3 = string2.split(" "); 

          sets = (parts3[1] + " " + parts3[6] + " " + parts3[8] + " "); 


          //System.out.print(parts3[1] + " " + parts3[6] + " " + parts3[8] + " "); 

          for (int j = 10; j < parts3.length; j++) { 

           //System.out.print(parts3[j] + " ");        
           // bufferWritter.write(parts3[j] + " "); 
           sets = sets.concat(parts3[j] + " "); 
          } 

          FileWriter fileWritter = new FileWriter("C:/Projects/Wells Fargo IVR/TestFolder/file.txt", true); 
          BufferedWriter bufferWritter = new BufferedWriter(fileWritter); 
          bufferWritter.write(sets); 
          bufferWritter.newLine(); 
          bufferWritter.close(); 
          // System.out.println(); 

          String[] str = new String[] { 
           sets 
          }; 
          Arrays.sort(str); 
          for (String s: str) { 
           //System.out.println(i + " " + s); 
          } 

         } 

        } 
       } 

       //bufferedWriter.write("This is file number" + (i)+ " " + line); 
       //bufferedWriter.newLine();    
      } 

      bufferedReader1.close(); 

     } 
     //System.out.println(testSetFinal); 
+0

此問題尚不清楚。集合聲明在哪裏?請包括足夠的代碼,以便我們瞭解/重新創建您的問題,而不是您的整個程序 – Spencer4134

+0

「我需要在第一個循環之外訪問」集合「@ Spencer4134我認爲這很清楚... –

+0

@sparky在你提供的代碼,'sets'不存在。它沒有在代碼中的任何地方聲明。因此,尚不清楚。 – Spencer4134

回答

3

您有String sets = null;當前已註銷。取消註釋,並將其切換到

String sets = "";