2017-02-10 49 views
-1

试图编写一个方法从单元读取数据并将其转换为字符串。 方法: p默认构造函数未定义隐式超级构造函数getdata()。必须定义一个明确的构造函数

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"); 

    } 

} 

错误: - 例外在线程 “主要” java.lang.Error的:未解决的问题,编译: 隐超构造的GetData()是未定义默认构造函数。必须定义一个明确的构造函数

回答

1

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

顺便说一下,该惯例是使用大写字母的第一个字母的大写字母的名字。另外,你的display()方法对我来说没有任何意义。您将null分配给单元格,然后执行String value = df.formatCellValue(cell); ...我建议您退后一步,在深入研究此代码之前深入思考您的解决方案以及Java的工作原理。

0

是它是不正确的与构造,所以我改变的代码 公共类向GetStringValue {

公共字符串显示(单元电池) {

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

} 

}

并称为显示方法。感谢您的帮助

相关问题