簡體   English   中英

System.out.println()如何在Java中工作?

[英]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.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM