【问题标题】:Unable to accept two dimensional String Array returned from a method无法接受从方法返回的二维字符串数组
【发布时间】:2021-09-14 04:16:06
【问题描述】:

首先:-),我不是很精通java。

所以在下面的代码中,我试图打印从方法返回的二维字符串。但做不到。获取类型不匹配错误。谁能帮忙。

public class ExcelUtilAdvanced {

    public String[][] getDatafromExcel(){
        
        int rowCount = sheet.getPhysicalNumberOfRows();
        int colCount = sheet.getRow(0).getPhysicalNumberOfCells();
        String[][] data = new String[rowCount-1][colCount];
        Row row;
        Cell cell;
        for(int i=1;i<rowCount;i++) {
            row = sheet.getRow(i);
            for(int j=0;j<colCount;j++) {
                cell = row.getCell(j);
                data[i-1][j] = format.formatCellValue(cell);
            }
        }
        System.out.println(data);
    return data;
        
    }
    public static void main(String[] args) {
        
        int rowCount = 2;
        int colCount = 7;
        
        ExcelUtilAdvanced eua = new ExcelUtilAdvanced("fileName.xlsx", "sheetName");
        String[][] data = new String[rowCount][colCount];
        
        for(int i=1;i<rowCount;i++) {
            for(int j=0;j<colCount;j++) {
                data[i-1][j]= eua.getDatafromExcel(); //Type Type mismatch: cannot convert from String[][] to String
            }
            
        }
        
    }

【问题讨论】:

  • data[i-1][j]StringgetDatafromExcel() 返回一个由 String 数组组成的数组。所以不适合。你想在这里做什么?
  • 想要将方法返回的数组存储在字符串数组中。如答案中所述,我没有正确接收数据。

标签: java excel selenium apache-poi r.java-file


【解决方案1】:

您可以创建一个新的二维数组来复制 getDatafromExcel(): 中的内容

像这样创建一个新的二维数组:

String[][] toFill =  new String[2][7];

或者如果你可以使用这个:

String[][] data = new String[rowCount][colCount];

在代码中,您的主要方法应如下所示:

public static void main(String[] args) {

int rowCount = 2;
int colCount = 7;

ExcelUtilAdvanced eua = new ExcelUtilAdvanced("fileName.xlsx", "sheetName");
String[][] data = new String[rowCount][colCount];
String[][] toFill =  new String[2][7];

for(int i=1;i<rowCount;i++) {
    for(int j=0;j<colCount;j++) {
        toFill= eua.getDatafromExcel(); 
    }

}

}

public static void main(String[] args) {

int rowCount = 2;
int colCount = 7;

ExcelUtilAdvanced eua = new ExcelUtilAdvanced("fileName.xlsx", "sheetName");
String[][] data = new String[rowCount][colCount];
data= eua.getDatafromExcel(); 

}

【讨论】:

  • 如果这就是 OP 试图做的事情,我认为您可以安全地删除循环(以及“类型不匹配”注释,就此而言)。
【解决方案2】:

您将String[][] 对象传递给String 变量。我认为您可以直接声明和初始化 String[][] 对象,传递该方法返回的结果。

public static void main(String[] args) {

    int rowCount = 2;
    int colCount = 7;

    ExcelUtilAdvanced eua = new ExcelUtilAdvanced("fileName.xlsx", "sheetName");
    String[][] data = eua.getDatafromExcel();
}

编辑:此外,您必须修改其余代码,以便您能够处理 rowCountcolCount 变量(也许您可以将它们作为输入参数放在第一个方法中),因为您不是t 使用 String[][] 声明中的那些。

喜欢:

String[][] data = eua.getDatafromExcel(rowCount, colCount);

并且您必须将System.out.println 放在每个循环的末尾,以便在您分配值时打印您的String[][]。 您不能只打印您的 data 变量。

一般示例:

for(int i = 1; i < rowCount; i++) {
    for(int j = 0; j < colCount; j++) {
        System.out.print(data[i-1][j] + " ");
    }
    System.out.println();
}

【讨论】:

  • 谢谢朋友。感谢您的帮助。
猜你喜欢
  • 1970-01-01
  • 1970-01-01
  • 2014-02-28
  • 1970-01-01
  • 1970-01-01
  • 2020-07-23
  • 1970-01-01
  • 2022-01-23
  • 1970-01-01
相关资源
最近更新 更多