我有一個CSV文件,格式如下:從CSV計算平均文件
City,Job,Salary Delhi,Doctors,500 Delhi,Lawyers,400 Delhi,Plumbers,100 London,Doctors,800 London,Lawyers,700 London,Plumbers,300 Tokyo,Doctors,900 Tokyo,Lawyers,800 Tokyo,Plumbers,400 Lawyers,Doctors,300 Lawyers,Lawyers,400 Lawyers,Plumbers,500 Hong Kong,Doctors,1800 Hong Kong,Lawyers,1100 Hong Kong,Plumbers,1000 Moscow,Doctors,300 Moscow,Lawyers,200 Moscow,Plumbers,100 Berlin,Doctors,800 Berlin,Plumbers,900 Paris,Doctors,900 Paris,Lawyers,800 Paris,Plumbers,500 Paris,Dog catchers,400
我想找個工資總額的平均值。
這是我的代碼:
`import java.io. *;
公共類A {
public static void main(String args[])
{
A a= new A();
a.run();
}
public void run()
{
String csv="C:\\Users\\Dipayan\\Desktop\\salaries.csv";
BufferedReader br = null;
String line = "";
int sum=0;
int count=0;
//String a=new String();
try {
br = new BufferedReader(new FileReader(csv));
try {
while ((line = br.readLine()) != null) {
// use comma as separator
String[] country = line.split(",");
int sal=Integer.parseInt(country[2]);
sum=sum+sal;
count++;
//System.out.println("Salary [job= " + country[0]
// + " , salary=" + country[2] + "]");
}
} catch (NumberFormatException | IOException e) {
System.out.println("NA");
e.printStackTrace();
}
} catch (FileNotFoundException e) {
e.printStackTrace();
}
System.out.println(sum/count);
System.out.println("Done");
}
}`
但是,其示值誤差:
java.lang.NumberFormatException: For input string: "Salary" at java.lang.NumberFormatException.forInputString(Unknown Source) at java.lang.Integer.parseInt(Unknown Source) at java.lang.Integer.parseInt(Unknown Source) at A.run(A.java:30) at A.main(A.java:9) Exception in thread "main" java.lang.ArithmeticException:/by zero at A.run(A.java:46) at A.main(A.java:9)`
有沒有更好的或短代碼來解析CSV文件。
你需要把代表你的頭的第一行不同的「工資」顯然不是一個數字。 – Leon