Warning: file_get_contents(/data/phpspider/zhask/data//catemap/9/java/328.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Java 尝试从excel for Selenium webdriver读取数据时出现ArrayIndexOutOfBoundsException异常_Java_Selenium - Fatal编程技术网

Java 尝试从excel for Selenium webdriver读取数据时出现ArrayIndexOutOfBoundsException异常

Java 尝试从excel for Selenium webdriver读取数据时出现ArrayIndexOutOfBoundsException异常,java,selenium,Java,Selenium,我正在尝试读取一个excel文件,其中包含用户名和密码列表。 我得到“java.lang.RuntimeException:java.lang.ArrayIndexOutOfBoundsException:2” 我的Excel是这样的 用户名-密码 U1 P1 U2-P2 U3 P3 U4 P4 也就是说,它有2列5行。我不想计算第一行,所以我已经给出了对象数据[][]=newobject[rows-1][cols] 请协助解决问题。谢谢 package com; import org.tes

我正在尝试读取一个excel文件,其中包含用户名和密码列表。 我得到“java.lang.RuntimeException:java.lang.ArrayIndexOutOfBoundsException:2”

我的Excel是这样的

用户名-密码 U1 P1

U2-P2

U3 P3

U4 P4

也就是说,它有2列5行。我不想计算第一行,所以我已经给出了对象数据[][]=newobject[rows-1][cols]

请协助解决问题。谢谢

package com;

import org.testng.annotations.DataProvider;
import org.testng.annotations.Test;

public class LoginTest {

    @Test(dataProvider="getData")
    public void doLogin(String userName, String password){


    }
    @DataProvider
    public Object[][] getData(){

        Xls_Reader xls = new Xls_Reader("E:\\Pessoal\\QTPSelenium\\Excel\\Login.xlsx");
        int rows = xls.getRowCount("Login");
        System.out.println("Row Count---"+rows);
        int cols = xls.getColumnCount("Login");
        System.out.println("Column Count---"+cols);

        Object data[][] = new Object[rows-1][cols];

        for(int rNum=2;rNum<=rows;rNum++){
            for(int cNum=0;cNum<=cols;cNum++){
                System.out.println(xls.getCellData("Login", cNum, rNum));
//ERROR IN THIS LINE
                    data[rNum][cNum] = xls.getCellData("Login", cNum, rNum);
                }
            }
            return data;
        }
    }
试试这个

for(int rNum=1;rNum<rows;rNum++){
            for(int cNum=0;cNum<cols;cNum++){
                System.out.println(xls.getCellData("Login", rNum, cNum));
                    data[rNum-1][cNum] = xls.getCellData("Login", rNum, cNum);
                }
            }

for(int-rNum=1;rNum“for(int-cNum=0;cNum)行和列的值是什么?您是否也可以共享excel?似乎您正在对行执行基于0的索引,对列执行基于1的索引
新对象[rows-1][cols];
因此,您可能需要使用
数据[rNum-1][cNum]
分配值。嗨@Sachin。不,我不是。我有5行2列。您使用相同的索引
rNum
访问电子表格和数组
数据
。您需要使用
数据[rNum-1][cNum]
。如果您使用调试器,直到抛出异常为止,您将看到
数据[0][]
始终是null@Sachin.它仍然不起作用。它仍然抛出相同的异常。我使用了此数据[rNum-1][cNum]仍然不起作用。我还尝试了数据[rNum-2][cNum]=xls.getCellData(“登录”,cNum,rNum);仍然不工作。您可以从控制台中告诉行和列的值是什么吗?意思是,System.out.println(“行计数-”+行);System.out.println(“列计数-”+列);还可以检查xls.getCellData(“Login”,cNum,rNum)的参数。它应该是xls.getCellData(“Login”,rNum,cNum)我相信肯定有朋友会检查并公布结果
for(int rNum=1;rNum<rows;rNum++){
            for(int cNum=0;cNum<cols;cNum++){
                System.out.println(xls.getCellData("Login", rNum, cNum));
                    data[rNum-1][cNum] = xls.getCellData("Login", rNum, cNum);
                }
            }