数组如何创建系统。出来println()在java中工作?
在下面提到的代码中,我试图从excel工作表中获取数据并将其存储在数组中。我已经编写了从ReadExcelData方法中的excel文件获取数据的代码。现在,我面临的问题是,当我使用数组打印数据时,我的主要方法中的数据被打印了多次。我发现,自从我使用了这个系统。出来println()在两个内表示lop,这就是为什么它被多次打印。为了解决这个问题,我移除了系统。出来println()(注释-在下面的代码中,粗体的System.out.println()是我删除的)从ReadExcelData方法中删除的,一旦删除,我就无法获得任何输出。请告诉我我应该怎么做才能从ReadExcelData只获取一次数据而不打印它,因为我想用我的主方法打印数据
package com.selenium;
import java.io.File;
import java.io.FileInputStream;
import java.io.FileNotFoundException;
import java.io.IOException;
import org.apache.poi.openxml4j.exceptions.InvalidFormatException;
import org.apache.poi.ss.usermodel.*;
@SuppressWarnings("unused")
public class ReadExcelData {
static String[] data = new String[15];
public String getData() throws InvalidFormatException, IOException{
String data="Initial";
File file = new File("C:\\Users\\Admin\\Desktop\\ScreenShot\\Excel.xls");
FileInputStream input = new FileInputStream(file);
Workbook work = WorkbookFactory.create(input);
Sheet sheet = work.getSheet("Data");
int rownum=sheet.getLastRowNum();
//System.out.println("Row number = "+rownum);
for(int i=0;i<rownum+1; i++){
Row row=sheet.getRow(i);
if(row != null){
for(int j=0; j<row.getLastCellNum();j++){
//System.out.println(row.getLastCellNum());
if(row.getCell(j) != null){
data = row.getCell(j).getStringCellValue();
if(data != null){
**System.out.println(data);**
}//if2
}//if1
}//for2
}//if3
}//for1
return data;
}//getdata
public static void main(String[] args) throws InvalidFormatException, IOException{
ReadExcelData read =new ReadExcelData();
for(int i=0;i<data.length;i++){
data[i]= read.getData();
}
}//main
}//class
Code block which is giving problem-
if(data != null){
**System.out.println(data);**
}//if2
# 1 楼答案
您正在循环中调用您的方法:
所以它是多次打印的
如果要将所有值放入data[]中,则应进行以下更改
从main方法只调用它一次:
# 2 楼答案
问题是,对于对象数据的每个单元格,您都在调用填充它的方法。 你有:
然后调用15次方法,打开、读取和返回整个文件15次
只要从主循环中删除循环,一切都将按照您的意愿工作