Java 缺少返回语句
我正在尝试使用读取Excel文件,并找到另一个for循环的开始位置 这是我的密码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
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;
}