Warning: file_get_contents(/data/phpspider/zhask/data//catemap/9/java/330.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Java 试图分析EDI文件并合计发票总额_Java_Parsing_Edi - Fatal编程技术网

Java 试图分析EDI文件并合计发票总额

Java 试图分析EDI文件并合计发票总额,java,parsing,edi,Java,Parsing,Edi,我已经设法提取了我正在寻找的数字,但是(可能是因为我从大学起就没有使用过Java),我无法将这些数字相加以获得EDI文件的“总数”和计数。输出显示我正在收集每个发票总额作为一个双精度,但当我尝试添加它们时,每次while循环运行时都会重置该数字,如果我将其放置在循环之外,它将无法识别我的变量 这是我的密码 try (BufferedReader br = new BufferedReader(new FileReader("\\Edi810o311214.dat"))) { String

我已经设法提取了我正在寻找的数字,但是(可能是因为我从大学起就没有使用过Java),我无法将这些数字相加以获得EDI文件的“总数”和计数。输出显示我正在收集每个发票总额作为一个双精度,但当我尝试添加它们时,每次while循环运行时都会重置该数字,如果我将其放置在循环之外,它将无法识别我的变量

这是我的密码

try (BufferedReader br = new BufferedReader(new FileReader("\\Edi810o311214.dat")))
{
    String line;
    while ((line = br.readLine())!= null)
    { 
    //eliminates lines that do not begin with "total"
    String lineEval = line.substring(0,5);
    if (lineEval.equals("Total"))
    {   
        //extracts total invoice field from line
        String totalValue = line.substring(12,26);
        double totalValueNum = Double.parseDouble(totalValue);

        //shows output for testing purposes (will remove)
        System.out.println(totalValueNum);    
        double total = 0;
        int counter = 0;

        total += totalValueNum;
        counter++;


    }

毫无疑问,我会花几个小时来研究这个问题,然后在最终放弃并发布后一两分钟内回答我自己的问题

try (BufferedReader br = new BufferedReader(new FileReader("\\Edi810o311214.dat")))
{
    int counter = 0;
    double total = 0;
    String line;
    while ((line = br.readLine())!= null)

    { 
    //eliminates lines that do not begin with "total"
    String lineEval = line.substring(0,5);
    if (lineEval.equals("Total"))

    {   
        counter++;
        //extracts total invoice field from line
        String totalValue = line.substring(12,26);
        double totalValueNum = Double.parseDouble(totalValue);
        total += totalValueNum;
        //shows output for testing purposes (will remove)
        System.out.println(totalValueNum);    






    }

    }
    System.out.println(counter);
    System.out.println(total);

    }

}
你所说的“与总计不符的行”是什么意思?如果您正在解析EDI,并且希望累积所有交换的总计(假设文件中有多个810),那么您需要在TDS段中获取该值。这是否已经是一个已翻译的文件(即X12转换为另一种格式)?