2013-08-27 176 views
0

我必須從兩個文件中讀取數據。爲此,我必須使用while迭代這兩個文件。這裏是我的代碼...繼續迭代外部while循環

//數據File1中的A,B,C,d //數據file2中有A,B,C

Scanner scanFile = new Scanner(new DataInputStream(fOne)); 
       while (scanFile.hasNextLine()) 
       { 
        countTwo = 0; 
        if(scanFile.nextLine()!=null) 
        { 
         count++; 
         Toast.makeText(getBaseContext(), "Count : " + count, 500).show(); 
        } 
        else 
         scanFile.close(); 

        Scanner scanFileT = new Scanner(new DataInputStream(fTwo)); 
        while(scanFileT.hasNextLine()) 
        { 
         if(scanFileT.nextLine()!=null) 
         { 

          countTwo++; 
          Toast.makeText(getBaseContext(), "CountTwo : " + countTwo, 500).show();     
         } 

         else 
          scanFileT.close(); 
        } 


       } 

我使用while循環。我在這裏得到的第一次count = 1和countTwo變量爲1,2和3,然後再次將變量計數爲2,3,4(因爲file1中的數據是4,而file2中的數據是3)。現在,我必須迭代outer while循環,例如count = 2和countTwo = 1,2,3。count count = 3和countTwo = 1,2,3.再次count = 4和countTwo = 1,2 ,3.需要做什麼?

+0

如果我正確理解您,您希望countTwo從1開始每次計數遞增。如果是這樣的話,我想你應該在進入內部循環之前分配countTwo = 1! – Ashish

+0

其實,我必須在這裏比較文件的內容。意思是,第一個文件的第一個內容將與第二個文件的所有內容匹配。同樣,第一個文件的第二個內容將與第二個文件的所有內容相匹配,直到第一個文件的最後一個內容爲止。 –

+0

你的例子甚至沒有編譯。請提供你正在做什麼的可運行示例。 –

回答

1
try 
      { 
      FileInputStream fOne = openFileInput("File1"); 

      } 
      catch (FileNotFoundException e) 
      { 
       e.printStackTrace(); 
      } 
      Scanner scanFile = new Scanner(new DataInputStream(fOne)); 
      while (scanFile.hasNextLine()) 
      { 
       countTwo = 0; 
       if(scanFile.nextLine()!=null) 
       { 
        count++; 
        Toast.makeText(getBaseContext(), "Count : " + count, 500).show(); 
       } 
       FileInputStream fTwo = openFileInput("File2"); 
       Scanner scanFileT = new Scanner(new DataInputStream(fTwo)); 
       while(scanFileT.hasNextLine()) 
       { 
        if(scanFileT.nextLine()!=null) 
        { 

         countTwo++; 
         Toast.makeText(getBaseContext(), "CountTwo : " + countTwo, 500).show();     
        } 
       } 
       fTwo.close(); 
      } 

閱讀外裏面你塞康文件countTwo將從1開始

+0

獲取相同的輸出...沒有任何作用... –

+0

@Anil編輯代碼,初始化您的countTwo變量在外循環內部爲零while循環 – Siva

+0

相同的輸出.... –

0

可以在外側開始分配countTwo = 1 while循環中,可選地可以只進入內的while循環

1

SCANFILE的第一次迭代之後之前分配該值,scanFileT將你有完全用盡迭代通過它。您需要重新初始化它。

Scanner scanFileT = new Scanner(new DataInputStream(fTwo)); 
while(scanFileT.hasNextLine()) 
{ 
. 
. 
} 

您更新後:while循環,而不是外部,即你的第一個文件的每一行的第二個文件將被讀取

Scanner scanFileT = new Scanner(new DataInputStream(fTwo)); 
while(scanFileT.hasNextLine()) 
{ 

} 
scanFileT.close(); 
+0

獲取相同的輸出...沒有什麼作用... –

+0

對不起,我的解釋是正確的,但是您可能要在重新初始化之前關閉掃描儀。 –

+0

嘿你在說什麼?在重新初始化掃描儀之前,我已經關閉了掃描儀外圍的掃描儀 –

0
try 
        { 
         fOne = openFileInput("File1"); 
         //fTwo = openFileInput("File2"); 
        } 
        catch (FileNotFoundException e) 
        { 
         e.printStackTrace(); 
        } 

        Scanner scanFile = new Scanner(new DataInputStream(fOne)); 
        while (scanFile.hasNextLine()) 
        { 
         countTwo = 0; 
         if(scanFile.nextLine()!=null) 
         { 
          count++; 

         } 

         try 
         { 
          fTwo = openFileInput("File2"); 
         } 

         catch (FileNotFoundException e) 
         { 
          e.printStackTrace(); 
         } 


         Scanner scanFileT = new Scanner(new DataInputStream(fTwo)); 
         while(scanFileT.hasNextLine()) 
         { 
          if(scanFileT.nextLine()!=null) 
          {       countTwo++; 

          } 
         } 
         scanFileT.close(); 


        } 
        count = 0;