Java:在读取一个文件之后,我如何将其设置为一个数组并找到列的平均值?
我写这个程序是为了读取一个cvs文件。该文件有921行11列。读取文件后,如何将其设置为数组,然后找到11列的平均值?非常感谢您的帮助,谢谢 以下是我在这一点上的代码: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{
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/非常陌生”的门户网站