0

我正在从包含非分隔文档元数据的数据源创建分隔文本字符串。所有数据都按索引排序,然后是子索引,我要做的第一件事就是为每条记录创建一个序列号。每行的第一个字符指示这是索引还是子索引记录,我使用这些来递增数据,如下面的逻辑中所述,它按预期工作。

import java.util.*;
import java.io.*;
import java.nio.file.*;
import java.util.regex.*;
import java.lang.StringBuilder;
 //
public class mdata
{
    public static void main(String[] args)
    {
        double indexNo = 0;
        double subIndexNo = 0;
        double recNo = 0 ;
        try
        {
            FileInputStream inputStream = new FileInputStream("whidata0.htm");
            BufferedReader br = new BufferedReader(new InputStreamReader(inputStream));
            String inputLine = null;
            while((inputLine=br.readLine())!=null)
            {
                String recordNumber = "";
                if (inputLine.trim().startsWith("aIE(2")) {
                indexNo = indexNo + 1;
                subIndexNo = .00;
                } else
                if (inputLine.trim().startsWith("aIE(3")) {
                subIndexNo = subIndexNo + .01;
                }
            recNo = indexNo + subIndexNo;
            System.out.println(recNo);
            }
        }
         //
        catch (Exception e)
        {
        System.err.println("Error: " + e.getMessage());
        }
    }
}

我有其他应用程序需要我序列化数据,并且想要创建一个分配序列号的独立方法。我遇到了一些可能与范围相关的问题,我需要一些额外的眼睛来帮助我了解正在发生的事情。

到目前为止,这是我创建序列化方法的地方:

import java.util.*;
import java.io.*;
import java.nio.file.*;
import java.util.regex.*;
import java.lang.StringBuilder;
 //
public class mdata2
{
    public static void main(String[] args)
    {
        try
        {
            FileInputStream inputStream = new FileInputStream("whidata0.htm");
            BufferedReader br = new BufferedReader(new InputStreamReader(inputStream));
            String inputLine = null;
            while((inputLine=br.readLine())!=null)
            {
                recNo = generateSerial(inputLine.trim());
                System.out.println(recNo);
            }
        }
         //
        catch (Exception e)
        {
        System.err.println("Error: " + e.getMessage());
        }
    }
     //
    public static double generateSerial(String inputLine)
    {
        double indexNo = 0;              // where do
        double subIndexNo = 0;           // these have 
        double recNo = 0 ;               // to go?

        String recordNumber = "";
        if (inputLine.trim().startsWith("aIE(2")) {
        indexNo = indexNo + 1;
        subIndexNo = .00;
        } else
        if (inputLine.trim().startsWith("aIE(3")) {
        subIndexNo = subIndexNo + .01;
        }
        recNo = indexNo + subIndexNo;
        System.out.println(recNo);
        return recNo;
    }
}

在第一个代码块中,我recNo打印为一个序列1.00, 2.00, 2.01, 2.02,2.033.00。在第二个中,相同的序列返回为1.00, 1.00, 1.01, 1.01,1.011.00。看看它,这是有道理的;我在该方法中做的第一件事是将变量重置为0. 初始化变量main给我范围问题 -generateSerial无法识别变量。

我玩过使用组合,this.[variableName]但这似乎没有任何效果。处理这个问题的最佳方法是什么?

4

0 回答 0