2011-07-13 41 views
-1

我试图阅读一个Excel文件,并找到我的另一个循环的开始位置。遗失退货声明

这是我的代码。

public static int CheckStartPosition(String filename,int Colno,String StartChar, int sheetno,int startpos) { 
try { 

Workbook workbook = new Workbook(); 

workbook.open(filename); 

Worksheet worksheet = workbook.getWorksheets().getSheet(sheetno); 

Cells cells=worksheet.getCells(); 

int num=cells.getMaxDataRow(); 

int num1=cells.getMaxDataColumn(); 

int numofsheet= workbook.getNumberOfSheets(); 

System.out.println(numofsheet); 

for (int n1=0;n1<=num;n1++) { 
    Cell cell1=cells.getCell(n1,Colno); 
    if(cell1.getValue()!=null) { 

     String value =cell1.getValue().toString().toLowerCase(); 
     if(value.equals(StartChar)) { 

     System.out.println(cell1.getValue()); 

     int S= cell1.getRowIndex(); 

     startpos=S+1; 

     System.out.println(startpos); 
     } 
    }else{} 
} 
workbook.save("C:\\Movies.xls",FileFormatType.EXCEL97TO2003); 

return startpos; 
} catch (IOException e) { 
    // TODO Auto-generated catch block 
    e.printStackTrace(); 
} 

}

:- 

CheckStartPosition(f1.xls, 0,"abc",2,0); 

如何返回指定startPosition

+1

-1:您至少可以尝试正确格式化您的代码......它会帮助您找到问题。 – paradigmatic

+0

尝试给变量一个适当的名称,以便我们可以找到问题 – john

+0

也许你可以解释这个好一点,然后标志重新打开。因为它很难知道你在做什么。 – Kev

回答

3

这是一个有点难以阅读由于formattign。 CheckStartPosition()需要返回一个int。在你的catch块你不会返回任何东西。退货。或者更好的是用throws IOException声明CheckStartPosition并从CheckStartPosition中删除try catch。另类使用你自己的异常类型。

0

你不会返回任何东西,你会得到一个异常。可能更好的方法是在方法的throws子句中声明实际例外。

-1

你打电话给你的方法的东西如下:

int returnedValue = CheckStartPosition(f1.xls, 0,"abc",2,0); 
+0

这是错误的。 –

+0

@Esben,为什么?你能否详细说明一下? – Shekhar

+0

不管你怎么称呼它,方法定义仍然是错误的。所以也许它比错误更无关紧要。编辑:澄清在Java中,你不能通过返回值重载,所以分配结果给一个变量没有什么区别,当它自我错误的方法。 –

1

你捕获异常,但不返回任何东西。试试这个:

catch (IOException e) 
    { 
     e.printStackTrace(); 
     return -1; // Some special value that means "I exploded" 
    } 

或者更好的,不抓,并宣布到throws IOException

0

你的方法你可以做的是你的try-catch块之前声明返回值,并给它-1。在您的try-catch块中分配值。 try-catch块之后,您将其返回。

int CheckStartPosition(...) 
{ 
    int returnInt = -1; 
    try{ 
     ... 
     returnInt = startpos; // instead of return startpos 
     ... 
    }catch(...){ 
     ... 
     returnInt = -1; // if your code can crash after the "returnInt = startpos;" 
    } 
    return returnInt; 
}