2017-02-10 20 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:未解決のコンパイルの問題: 暗黙のスーパーコンストラクタ函()はデフォルトコンストラクタの定義されていません。明示的なコンストラクタを定義する必要があります

答えて

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; 

} 

}

にコードを変更し、ディスプレイと呼ばれます方法。助けてくれてありがとう

関連する問題