-1

我有一个如下所示的输入文件(例如):

10 12
1
2
...
9
10
1
2
...
11
12

第一个告诉接下来的 10 行是part1

然后接下来的 12 行是 for part2

我想创建两个单独的文件part1.txtpart2.txt解析原始input.txt文件。

怎么能这样做?有什么好心的建议吗?我正在使用 java 扫描仪。

解决方案(部分):根据以下建议对我有用

    Scanner scanner = new Scanner(filename);        
    try {
        String[] first_line = scanner.nextLine().split("\\s+", 3); // reading the first line of the input file

        int EdgeCount = Integer.parseInt(first_line[0]);    
        int VertexCount = Integer.parseInt(first_line[1]);  
        String hasWeight = first_line[2];

        while (scanner.hasNextLine()) {
            if(EdgeCount != 0) { // check whether any more edges are left to read from input file
                Scanner edge_scanner = new Scanner(scanner.nextLine());

....
4

3 回答 3

1

由于这听起来像家庭作业,我不会过多介绍代码细节,但您可以阅读第一行,然后使用String类中的.split("\\s+")方法。

完成此操作后,您将10在第一个位置和12第二个位置得到一个数组。

当您遍历下一行时,只需保留一个计数器并检查计数器的值是否小于或等于 10。如果这成立,那么您知道您需要输出一个文件。如果条件不再成立并且计数器现在大于10但小于或等于10 + 12,那么您知道应该在第二个文件中打印。

于 2013-07-22T06:29:09.043 回答
1

首先,逐行读取文件,将前10行写入part1.txt,然后将12行后写入part2.txt。

为此使用这种模式:

BufferedReader br = new BufferedReader(new FileReader("你的输入文件路径"));

    String line = null;

    int lineCounter = 1;

    while( (line = br.readLine()) != null)
    {
    if( (lineCounter % 23 ) < 11 )
    {
       //Write part1.txt
    }
    else if( (lineCounter %23) > 10 )
    {
        //write part2.txt
    }
    lineCounter++;
    }

    br.close();
于 2013-07-22T06:38:15.810 回答
1

尝试这个,

Scanner scanner = new Scanner(System.in);
br  = new BufferedReader(new FileReader("fileName.txt"));
int first = scanner.nextInt(); //10
int second = scanner.nextInt();//12
int x = 0;
int j = 0;
while ((sCurrentLine  = br.readLine()) != null) 
   {
     if (x <= first)
     {
        x++;
        //write in 1st file
     }
     else if (j <= second)
     {
        j++;
        //write in 2nd file
     }
}
br.close();
于 2013-07-22T07:24:18.480 回答