我有一个程序,它将读取从第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();
}
提前致谢!
答案 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);
}
完成所有文件读取后调用此方法。 希望它有所帮助!