0

我必须从两个文件中读取数据。为此,我必须使用 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)。现在我必须迭代外部 while 循环,例如我得到计数​​值为 count=2 和 countTwo= 1、2、3。再次 count=3 和 countTwo = 1、2、3。再次 count=4 和 countTwo = 1、2 , 3. 需要做什么?

4

4 回答 4

1

在 scanFile 的第一次迭代之后,scanFileT 将被耗尽,因为您已经完全迭代了它。您将需要重新初始化它。

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

更新后:

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

 }
 scanFileT.close();
于 2013-08-27T07:01:32.173 回答
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();
            }

在外部while循环而不是外部读取您的secon文件,即对于您的第一个文件的每一行,您的第二个文件将被读取并且countTwo将再次从1开始

于 2013-08-27T07:01:49.733 回答
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;
于 2013-08-27T07:49:08.600 回答
0

您可以在外部 while 循环的开头分配 countTwo = 1,或者您可以在进入内部 while 循环之前分配此值

于 2013-08-27T07:01:23.403 回答