隐式超级构造函数getdata()未定义为默认构造函数。必须定义一个显式构造函数

时间:2017-02-10 12:20:03

标签: java selenium-webdriver

尝试编写一种从单元格读取数据并将其转换为字符串的方法。 方法 : P

ublic class getStringValue {

    public getStringValue(Cell cell) {

    }
    String display ()
    {
        Cell cell = null;
        DataFormatter df = new DataFormatter ();
        String value = df.formatCellValue(cell);
        return value;
    }


}
calling the method in another class

public class acessUser extends getdata  {

    void login(String filepath ,String filename ,String sheetname) throws IOException{

    File file = new File( filepath + "\\"+ filename)    ;
    FileInputStream datafile    = new FileInputStream(file);
    HSSFWorkbook wb = new HSSFWorkbook (datafile);
    Sheet sh = wb.getSheet(sheetname);

    int rownum = sh.getLastRowNum()+1;
    int colnum = sh.getRow(0).getLastCellNum();

    String [][] data = new String [rownum][colnum];

    for (int i=0 ; i< rownum ; i++)
    {
  Row row = sh.getRow(i);
          for (int  j =0 ; j < colnum ; j ++)
          {
            Cell cell = row.getCell(j);
            getStringValue gt = new getStringValue(cell);
            String value =  gt.display();
            //java.lang.String value = cell.getStringCellValue();   
          data[i][j]=value;
         System.out.println(value);

        //String ui = data[i][j];

    }
    }
    }
    public static void main(String[] args) throws IOException {
        // TODO Auto-generated method stub

        acessUser n = new acessUser ();
         n.login("A:\\selenium", "selenium.xls", "sheet1");

    }

}

错误: - 线程“main”中的异常java.lang.Error:未解决的编译问题:     隐式超级构造函数getdata()未定义为默认构造函数。必须定义显式构造函数

2 个答案:

答案 0 :(得分:1)

您将acessUser定义为getdata的子类,并且不为该类定义构造函数acessUser()。然后,您尝试通过执行new acessUser ();来创建该类的实例。由于没有定义构造函数,因此将调用父类的构造函数,即getdata()。但似乎这个构造函数未定义。

顺便说一句,惯例是对类名的第一个字母使用大写。此外,您的display()方法对我没有任何意义。你将null分配给单元格,然后执行String value = df.formatCellValue(cell); ...我建议你退后一步,进一步思考你的解决方案以及Java如何进一步研究这段代码。

答案 1 :(得分:0)

是的,构造函数不正确所以我将代码更改为 public class getStringValue {

public String display(Cell cell)     {

    DataFormatter df = new DataFormatter ();
    String value = df.formatCellValue(cell);
    return value;

}

}

并调用Display方法。谢谢你的帮助