[英]How System.out.println() works in java?
在下面提到的代碼中,我試圖從Excel工作表中獲取數據並將其存儲在數組中。 我已經編寫了從ReadExcelData方法中的Excel文件中獲取數據的代碼。 現在,當我使用數組打印數據時,我面臨的問題是我的主要方法內部,數據被多次打印。 我發現,由於我在兩個內部都使用了System.out.println(),這就是為什么它多次打印的原因。 為了解決這個問題,我從ReadExcelData方法中刪除了System.out.println()(在下面的代碼中,粗體System.out.println()是我刪除的一個),一旦這樣做,我就無法得到任何輸出。 請告訴我我應該怎么做才能從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
您正在循環調用您的方法:
for(int i=0;i<data.length;i++){
data[i]= read.getData();
}
因此它要打印多次。
如果要將所有值都放入data []中,則應進行以下更改
public String[] getData() throws InvalidFormatException, IOException{
String[] data = new String[15];
...
int k =0;
...
String cellVal = row.getCell(j).getStringCellValue();
if(cellVal != null){
data[k++] = cellVal;
}//if2
....
return data;
}
從main方法只調用一次:
String[] excelData = read.getData();
問題是,對於對象數據的每個單元,您正在調用填充它的方法。 你有:
data[i]= read.getData();
然后將您的方法調用15次,將整個文件打開,讀取並返回15次。
只需從您的主循環中刪除循環,一切就可以按您希望的那樣工作。
聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.