在java中打印和匹配值

时间:2013-12-04 19:13:18

标签: java

我有一个程序,它将读取从第29行开始的文本文件。如果该行包含单词“n.a”或“Total”,程序将跳过这些行。 程序将从数组中获取元素[2]和[6]。 我需要获取数组的元素[6]并将其打印在相应的值下面。 阵列的元素[2]是所有分析物的位置,元素[6]包含每种分析物的量。

程序将读取的文件如下所示:

12      9-62-1                      

Sample Name:        9-62-1          Injection Volume:       25.0  
Vial Number:        37              Channel:                ECD_1
Sample Type:        unknown         Wavelength:             n.a.
Control Program:    Anions Run      Bandwidth:              n.a.
Quantif. Method:    Anions Method   Dilution Factor:        1.0000  
Recording Time:     10/2/2013 19:55 Sample Weight:          1.0000  
Run Time (min):     14.00           Sample Amount:          1.0000  




No.     Ret.Time            Peak Name   Height  Area        Rel.Area    Amount  Type 
        min     µS  µS*min  %   mG/L    
1   2.99        Fluoride    7.341       1.989   0.87        10.458      BMB
2   3.88        Chloride    425.633     108.551 47.72       671.120     BMb
3   4.54        Nitrite     397.537     115.237 50.66       403.430     bMB
4   5.39        n.a.        0.470       0.140   0.06        n.a.        BMB
5   11.22       Sulfate     4.232       1.564   0.69        13.064      BMB
    Total:      835.213                 227.482 100.00      1098.073    

程序需要读取该类型的文件,并将数组的元素[6]存储在文件夹中单独文件的标题下。该文件将有这样的标题:

氟化物,氯化物,亚硝酸盐,硫酸盐,

氟化物的量应该在氟化物下,氯化物的量应该在氯化物之下等等,如果没有亚硝酸盐或任何其他分析物,则每个分析物应该为零。 我只需要知道如何匹配,然后我知道我必须写文件,我将在稍后做,但知道我需要帮助匹配。

最终的输出应该像这样。 第一行将写入文本文件,然后第二行将是在其相应分析物下匹配的值,如下所示:

Sample#,Date,Time,Fluoride,Chloride,Nitrite,Sulfate,9-62-1,10/2/2013,19:55,10.458,671.120,403.430,13.064,

同样,如果分析物不存在于文件中或者它为空,则应该放置0。

这是我的代码:

//获取示例#,日期和时间。

String line2;
    while ((line2 = br2.readLine()) != null) {
        if (--linesToSkip2 > 0) {
            continue;
        }
        if (line2.isEmpty() || line2.trim().equals("") || line2.trim().equals("\n")) {
            continue;
        }
        if (line2.contains("n.a.")) {
            continue;
        }
        if (line2.contains("Total")) {
            continue;
        }

        String[] values2 = line2.split("\t");
        String v = values2[2];//Stored element 2 in a string.
        String v2 = values2[6];//Stored element 6 in a string.
        String analytes = "Fluoride,Chloride,Nitrite,Sulfate";//Stored the analytes into an array.

        if (analytes.contains(v)) {
            System.out.println(v2);
        }


        int index2 = 0;
        for (String value2 : values2) {
            /*System.out.println("values[" + index + "] = " + value);*/
            index2++;
        }
        System.out.print(values2[6] + "\b,");
        /*System.out.println(values[6]+"\b,");*/


        br.close();

    }

提前致谢!

1 个答案:

答案 0 :(得分:0)

所以,如果我理解你的任务是正确的,并且每个元素都在新的一行。 在很多方面解决这个问题的方法有哪些,但在我看来用你的代码最简单的解决方法就是使用StringBuffer。

//In your code i saw you have to arrays one of them with element name 
//other with element code or smth
StringBuffer firstLine = new StringBuffer();
StringBuffer secondLine = new StringBuffer();
public static void printResult(String[] Name, String[] Code){
    //First we gona make first line
    //Here we are adding data before Names
    firstLine.append("Stuff before Names");
    for(int i =0;i<name.length;i++){
        //Here we gona add all names in the list which is good
        //Dont forget spaces
        firstLine.append(name[i]+ " ");
    }
    //And same goes for second line just change loop array and data added before loop.

    //And in the end this should print out your result
    System.out.println(firstLine+"\n" + secondLine);
}

完成所有文件读取后调用此方法。 希望它有所帮助!