2015-03-30 45 views
0

我设法提取我正在查找的数字,但(可能是因为我从大学以来没有使用过Java)我无法添加数字来获得“总数“并计入EDI文件。输出结果显示我将每个发票总额都作为一个double来收集,但是当我尝试添加它们时,它会在每次while循环运行时重置数字,如果将它放在循环之外,则它不会识别我的变量。试图解析EDI文件并总计发票

这里是我的代码

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++; 


    } 
+0

你的意思是“不符合总数的线条”?如果您正在解析EDI并想要累积所有交换的总计(假设文件中有多个810),则您需要在TDS部分中获取该值。这已经是一个翻译文件(意味着X12到另一种格式)? – Andrew 2015-03-30 17:46:07

回答

0

它会站在原因,我想看看这几个小时,然后在一分钟内回答我的问题或两个终于放弃并张贴

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); 

    } 

}