Java 缺少返回语句

Java 缺少返回语句,java,Java,我正在尝试使用读取Excel文件,并找到另一个for循环的开始位置 这是我的密码 public static int CheckStartPosition(String filename,int Colno,String StartChar, int sheetno,int startpos) { try { Workbook workbook = new Workbook(); workbook.open(filename); Worksheet worksheet = wor

我正在尝试使用读取Excel文件,并找到另一个for循环的开始位置

这是我的密码

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()需要返回一个int。在catch块中不返回任何内容。归还一些东西。或者更好的方法是使用抛出IOException声明CheckStartPosition,并从CheckStartPosition中删除try catch。或者使用您自己的异常类型。

如果您得到异常,则不返回任何内容。更好的方法可能是在方法的
throws
子句中声明实际异常。

您必须使用以下内容调用您的方法:

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

您正在捕获异常,但未返回任何内容。试试这个:

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

或者更好的方法是,不要捕获并声明您的方法,以
抛出IOException

您可以做的是在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;
}

@艾斯本,为什么?你能详细解释一下吗?不管你怎么称呼它,方法定义仍然是错误的。因此,也许这与其说是错误的,不如说是无关紧要的。编辑:为了澄清在java中,您不能通过返回值来重载,因此,当结果本身的方法错误时,将结果分配给变量没有任何区别。-1:您至少可以尝试正确设置代码格式。。。它将帮助你找到问题。试着给变量一个合适的名称,这样我们就可以找到问题。也许你可以解释得比重新打开标志好一点。就目前而言,很难知道你想做什么。
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;
}