Java:在读取一个文件之后,我如何将其设置为一个数组并找到列的平均值?

Java:在读取一个文件之后,我如何将其设置为一个数组并找到列的平均值?,java,arrays,average,Java,Arrays,Average,我写这个程序是为了读取一个cvs文件。该文件有921行11列。读取文件后,如何将其设置为数组,然后找到11列的平均值?非常感谢您的帮助,谢谢 以下是我在这一点上的代码: package applesa; import java.io.File; import java.util.Scanner; public class readfile { private Scanner x; public void openFile() { try{

我写这个程序是为了读取一个cvs文件。该文件有921行11列。读取文件后,如何将其设置为数组,然后找到11列的平均值?非常感谢您的帮助,谢谢

以下是我在这一点上的代码:

package applesa;

import java.io.File;
import java.util.Scanner;

public class readfile {

private Scanner x;

    public void openFile() {
        try{
            x = new Scanner(new File("csvfile"));
        }
        catch(Exception e){
            System.out.println("Could not find file");
        }
    }

    public void readFile(){

        while(x.hasNext()){
            String a = x.next();
            String b = x.next();
            String c = x.next();
            String d = x.next();
            String e = x.next();
            String f = x.next();
            String g = x.next();
            String h = x.next();
            String i = x.next();
            String j = x.next();
            String k = x.next();

            System.out.printf("%s %s %s %s %s %s %s %s %s %s %s\n", a,b,c,d,e,f,g,h,i,j,k);     
        }
    }
    public void closeFile() {
        x.close();
    }
}
主要方法是:

package applesa;

public class applesa {
    public static void main (String[] args){

        readfile r = new readfile();
        r.openFile();
        r.readFile();
        r.closeFile();
    }
}

这里有很多资源和公开的帖子(这里有两篇)可以帮助你回答问题

读取csv的更好方法可能是使用“拆分”功能,该功能已经为您提供了一个行数组:

如果需要设置列信息数组,可以执行以下操作:

//for any column:
int[] {col}_array = new int[921];

//for each row read into line:
row = line.split(",");
{col}_array = row[col];
或者使用上面的设置,类似以下内容:

// Set up some type of storage (this is just an example):
int[][] data = new int[11][921];
int[] col_sums = new int[11];  //you need to keep track of each column's sum to calculate the average later
int row_counter = 0;

// Within while(x.hasNext()) look from above
for(int i = 0; i < 11; i++) {      // for each column in current row
 int next_elem = x.next();         // gets the next element of the row like you've been doing
 data[i][row_counter] = next_elem; // sets the data for that column and that row to the new element
 col_sums[i] += next_elem;         // updates the column sums to include this row's data
} // end of for-loop
row_counter++; //increases the row counter for the next iteration of the while loop (i.e. the next row)
//end of while-loop
//设置某种类型的存储(这只是一个示例):
int[][]数据=新int[11][921];
int[]col_sums=新的int[11]//您需要跟踪每列的总和,以便稍后计算平均值
int row_计数器=0;
//在while内(x.hasNext())从上面看
对于(int i=0;i<11;i++){//对于当前行中的每一列
int next_elem=x.next();//获取行的下一个元素,就像您一直在做的那样
data[i][row\u counter]=next\u elem;//将该列和该行的数据设置为新元素
col_sums[i]+=next_elem;//更新列和以包括此行的数据
}//for循环结束
行计数器++//增加while循环下一次迭代(即下一行)的行计数器
//while循环结束
要深入了解计算平均值的方法,请查看这篇文章(关键是处理整数以获得十进制信息的双精度):

您可以创建一个
字符串
数组,并为其赋值:

String[] text = r.readFile();
然后,对于
readFile()
方法:

public String[] readFile() {
    ArrayList<String> text = new ArrayList<>();
    while (x.hasNext()) {
        text.add(x.next());
    }
    return text.toArray();
}
公共字符串[]readFile(){
ArrayList text=新的ArrayList();
while(x.hasNext()){
text.add(x.next());
}
返回text.toArray();
}

StackOverflow正在成为“为我编写此代码,因为我对java/非常陌生”的门户网站