用java从excel读取二维数组过程中报错
代码如下,主要是做一些统计;问题应该处在从excel读取的过程中,没有飘红,但是编译时还是报错囧……希望大家帮忙看下,不甚感激……packagesy2;importjxl...
代码如下,主要是做一些统计;问题应该处在从excel读取的过程中,没有飘红,但是编译时还是报错
囧……希望大家帮忙看下,不甚感激……
package sy2;
import jxl.*;
import jxl.read.biff.*;
import java.io.*;
import java.io.File;
public class Statistics {
public void QuickSort(double[] pData,int left,int right) {} //快速排序
public static void main(String[] args){
double[][] A=new double[365][9]; //全部数据输入
double[] err=new double[365];
Workbook book=null;
try {
book = Workbook.getWorkbook(new File("C:/Users/HP/Desktop/Test.xls"));
} catch (FileNotFoundException e) {
e.printStackTrace();
} catch (BiffException e) {
e.printStackTrace();
} catch (IOException e) {
e.printStackTrace();
}
//get a Sheet object.
Sheet sheet = book.getSheet(0);
//get 1st-Column,1st-Row content.
int rows=sheet.getRows();
int cols=sheet.getColumns();
Cell cell=null;
for(int i=0;i<rows;i++){
for(int j=0;j<cols;j++){
cell=sheet.getCell(i,j);
A[i][j]=Integer.parseInt(cell.getContents());
System.out.println(A[i][j]);
}
}
book.close();
for(int i=0;i<365;i++){ //总计循环365次
double[] temp=new double[9*(i+1)];// 存放排完序的数组
for(int j=0;j<i;j++){
for(int k=0;k<9;k++){
temp[j*9+k]=A[j][k];
}
}
Statistics p=new Statistics();
p.QuickSort(temp,0,9*(i+1)-1); //排序
//确定分组
double m=(temp[9*(i+1)]-temp[0])/0.05;
int n=(int)m+1;//确定分组数
double [] B=new double[n+1];
B[0]=temp[0];//确定分组下限
for(int j=1;j<n+1;j++){
B[j]=B[j-1]+m;
}
//频数统计
int f[]=new int[n];
for(int j=0;j<n;j++){ //将初值设置为0
f[j]=0;
}
int k=1;
for(int j=0;j<temp.length;j++){
while(k!=n)
{
if(temp[j]<B[k])
{f[k-1]++;
break;
}
else k++;
}
}
double g[]=new double[n];
for(int j=0;j<n;j++){ //频率统计
g[j]=f[j]/(9*(i+1));
}
//正太拟合下的概率
double mean=0; //求均值
for(int j=0;j<temp.length;j++){
mean=mean+temp[j];
}
mean=mean/temp.length;
double sd=0; //求标准差
for(int j=0;j<temp.length;j++){
sd=sd+(temp[j]-mean)*(temp[j]-mean);
}
sd=Math.sqrt(sd/temp.length);
}}
已有网友指出cell=sheet.getCell(i,j);中 i和j的顺序反了,
这是因为getCell(int column,int row)所以应该cell=sheet.getCell(j,i);
但是修改了这个错误之后 还是报错 展开
囧……希望大家帮忙看下,不甚感激……
package sy2;
import jxl.*;
import jxl.read.biff.*;
import java.io.*;
import java.io.File;
public class Statistics {
public void QuickSort(double[] pData,int left,int right) {} //快速排序
public static void main(String[] args){
double[][] A=new double[365][9]; //全部数据输入
double[] err=new double[365];
Workbook book=null;
try {
book = Workbook.getWorkbook(new File("C:/Users/HP/Desktop/Test.xls"));
} catch (FileNotFoundException e) {
e.printStackTrace();
} catch (BiffException e) {
e.printStackTrace();
} catch (IOException e) {
e.printStackTrace();
}
//get a Sheet object.
Sheet sheet = book.getSheet(0);
//get 1st-Column,1st-Row content.
int rows=sheet.getRows();
int cols=sheet.getColumns();
Cell cell=null;
for(int i=0;i<rows;i++){
for(int j=0;j<cols;j++){
cell=sheet.getCell(i,j);
A[i][j]=Integer.parseInt(cell.getContents());
System.out.println(A[i][j]);
}
}
book.close();
for(int i=0;i<365;i++){ //总计循环365次
double[] temp=new double[9*(i+1)];// 存放排完序的数组
for(int j=0;j<i;j++){
for(int k=0;k<9;k++){
temp[j*9+k]=A[j][k];
}
}
Statistics p=new Statistics();
p.QuickSort(temp,0,9*(i+1)-1); //排序
//确定分组
double m=(temp[9*(i+1)]-temp[0])/0.05;
int n=(int)m+1;//确定分组数
double [] B=new double[n+1];
B[0]=temp[0];//确定分组下限
for(int j=1;j<n+1;j++){
B[j]=B[j-1]+m;
}
//频数统计
int f[]=new int[n];
for(int j=0;j<n;j++){ //将初值设置为0
f[j]=0;
}
int k=1;
for(int j=0;j<temp.length;j++){
while(k!=n)
{
if(temp[j]<B[k])
{f[k-1]++;
break;
}
else k++;
}
}
double g[]=new double[n];
for(int j=0;j<n;j++){ //频率统计
g[j]=f[j]/(9*(i+1));
}
//正太拟合下的概率
double mean=0; //求均值
for(int j=0;j<temp.length;j++){
mean=mean+temp[j];
}
mean=mean/temp.length;
double sd=0; //求标准差
for(int j=0;j<temp.length;j++){
sd=sd+(temp[j]-mean)*(temp[j]-mean);
}
sd=Math.sqrt(sd/temp.length);
}}
已有网友指出cell=sheet.getCell(i,j);中 i和j的顺序反了,
这是因为getCell(int column,int row)所以应该cell=sheet.getCell(j,i);
但是修改了这个错误之后 还是报错 展开
1个回答
展开全部
修改了之后是什么错?我用你的代码试了一下是显示的数组越界。
追问
Exception in thread "main" java.lang.Error: Unresolved compilation problem:
Syntax error on token "[", Expression expected after this token
at sy2.Statistics.main(Statistics.java:104)
追答
额,你的那个排序的函数代码没给出,不知道at sy2.Statistics.main(Statistics.java:104)是哪一行,依报错看来,好似那一行的语法有错误。。。
推荐律师服务:
若未解决您的问题,请您详细描述您的问题,通过百度律临进行免费专业咨询