Как System.out.println () работает в Java?

1

В приведенном ниже коде я пытаюсь получить данные с листа excel и хранить их внутри массива. Я написал код для получения данных из файла excel в моем методе ReadExcelData. Теперь проблема, с которой я столкнулся, находится внутри моего основного метода, когда я печатаю данные, используя массив, который данные печатаются несколько раз. Я обнаружил, что, поскольку я использовал System.out.println() внутри двоих для lop, поэтому он печатается многократно. Чтобы решить эту проблему, я удалил System.out.println() (Comment- В нижеприведенном коде полужирный 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
  • 0
    read.getData считывает все данные из Excel.xls и печатает их. Ваша основная программа вызывает read.getData 15 раз. Как вы думаете, что произойдет, когда вы назвали это 15 раз?
Теги:
excel
arrays
for-loop

2 ответа

1

Проблема в том, что для каждой ячейки данных объекта вы вызываете метод, который заполняет его. У тебя есть:

    data[i]= read.getData();

и затем вы получите свой метод 15 раз, открыв, прочитав и вернув весь файл 15 раз.

Просто удалите цикл из основного, и все будет работать так, как вы хотите.

1

вы вызываете свой метод в цикле:

 for(int i=0;i<data.length;i++){
         data[i]= read.getData();
      }

Поэтому он печатает несколько раз.

Если вы хотите поместить все значения в данные [], вы должны сделать следующие изменения:

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;
}

И из основного метода вызывается только один раз:

String[] excelData = read.getData();
  • 0
    На самом деле я хочу получить строковые данные внутри одного массива, т.е. data [1] = 1 Value, data [2] = 2nd Value. Но проблема в том, что я не могу этого сделать. Подскажите, пожалуйста, как это сделать? if (data! = null) { System.out.println (data); } // if2. И я хочу знать, что именно System.out.println (данные); работая внутри цикла, потому что когда я удаляю это, программа печатает только последние данные ячейки из файла Excel
  • 0
    @SwetaSingh применить вышеупомянутые изменения к вашему коду. это будет делать то, что вы пытаетесь достичь.
Показать ещё 4 комментария

Ещё вопросы

Сообщество Overcoder
Наверх
Меню