如何创建基于输入参数创建序列号的方法?

时间:2013-10-11 13:21:21

标签: java serialization scope

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

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.002.002.012.022.033.00等。在第二个中,相同的序列将返回1.001.001.011.011.01,{{1}看着它,这是有道理的;我在方法中做的第一件事就是将变量重置为1.00。在0中初始化变量会给我提供范围问题 - main无法识别变量。

我使用了generateSerial的组合,但似乎没有任何效果。处理这个问题的最佳方法是什么?

0 个答案:

没有答案