2016-11-23 66 views
2

我目前正试图将数据写入Excel的报告。我可以将数据写入csv文件,但是它不会以我想要的顺序在excel中出现。我需要在每列中以最佳和最差的适应度打印数据,而不是在平均值下打印。下面是相关的代码,任何帮助,将不胜感激:Java CSV写作

String [] Fitness = "Average fitness#Worst fitness #Best Fitness".split("#"); 
    writer.writeNext(Fitness); 

    //takes data from average fitness and stores as an int 
    int aFit = myPop.individuals[25].getFitness(); 
    //converts int to string 
    String aFit1 = Integer.toString(aFit); 
    //converts string to string array 
    String aFit2 [] = aFit1.split(" "); 
    //writes to csv 
    writer.writeNext(aFit2); 
    //String [] nextCol = "#".split("#"); 



    int wFit = myPop.individuals[49].getFitness(); 
    String wFit1 = Integer.toString(wFit); 
    String wFit2 [] = wFit1.split(" "); 
    writer.writeNext(wFit2); 

    int bFit = myPop.individuals[1].getFitness(); 
    String bFit1 = Integer.toString(bFit); 
    String bFit2 [] = bFit1.split(" "); 
    writer.writeNext(bFit2); 

enter image description here

+0

谢谢你,现在正在工作,非常感谢你的帮助。 – Jackington

+1

删除你的问题呢? – Alex

+0

我会在一分钟内删除你! – Jackington

回答

0

从文档在 CSVWriter.html#writeNext(java.lang.String[])

public void writeNext(String[] nextLine) - 下一行写入文件。

字符串数组提供是

一个字符串数组,以作为一个单独的条目中的每个以逗号分隔的元件。

您正在编写3行而不是1行,并且您编写的每行都包含一个带有单个条目的数组。

writer.writeNext(aFit2); 
writer.writeNext(wFit2); 
writer.writeNext(bFit2); 

解决方案: 创建具有所有3项(列值)的单个阵列和写,一旦在一行。

0

我想你应该再打电话给你“writeNext”方法,每行DATAS的:

String [] Fitness = "Average fitness#Worst fitness #Best Fitness".split("#"); 
writer.writeNext(Fitness); 

int aFit = myPop.individuals[25].getFitness(); 
String aFit1 = Integer.toString(aFit); 

int wFit = myPop.individuals[49].getFitness(); 
String wFit1 = Integer.toString(wFit); 

int bFit = myPop.individuals[1].getFitness(); 
String bFit1 = Integer.toString(bFit); 

writer.writeNext(new String[]{aFit1, wFit1, bFit1}); 
0

我假设你正在使用CSVWriter写入到一个CSV文件。请确保在一个问题中提供尽可能多的细节,这使得其他人更易读。

正如可以从CSVWriter的文档看到:

空隙writeNext(字符串[] nextLine)

下一行写入到文件中。

writeNext方法实际上是将数组写入文件的一行。从你的代码:

writer.writeNext(aFit2); 
writer.writeNext(wFit2); 
writer.writeNext(bFit2); 

因此,而不是做这个'字符串aFit2 [] = aFit1.split(”“); 创建值的数组,然后传递数组writeNext

举个例子,你可以考虑你自己的例子通过列名的数组,被写在一个单行:

writer.writeNext(Fitness);