2013-08-27 132 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;