有 Java 编程相关的问题?

你可以在下面搜索框中键入要查询的问题!

数组如何创建系统。出来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

共 (2) 个答案

  1. # 1 楼答案

    您正在循环中调用您的方法:

     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();
    
  2. # 2 楼答案

    问题是,对于对象数据的每个单元格,您都在调用填充它的方法。 你有:

        data[i]= read.getData();
    

    然后调用15次方法,打开、读取和返回整个文件15次

    只要从主循环中删除循环,一切都将按照您的意愿工作