2011-07-13 3 views
-1

Je tente de lire un fichier Excel en utilisant et en recherchant la position de départ de mon autre boucle.Déclaration de déclaration manquante

Ceci est mon code.

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

Comment retourner startPosition

+1

-1: Vous pouvez au moins essayer de formater correctement votre code ... Cela vous aidera à trouver le problème. – paradigmatic

+0

essayer de donner un nom aux variables, de sorte que nous puissions trouver le problème – john

+0

Peut-être que vous pourriez expliquer cela un peu mieux que le drapeau à avoir rouvert. En l'état, il est difficile de savoir ce que vous essayez de faire. – Kev

Répondre

3

Il est un peu difficile à lire en raison de formattign. CheckStartPosition() doit retourner un int. Dans votre bloc catch, vous ne retournez rien. Retourner quelque chose. Ou mieux encore déclarer CheckStartPosition avec throw IOException et drop try catch de CheckStartPosition. Alternative utilisez votre propre type d'exception.

0

Vous ne retournez rien si vous obtenez une exception. Il est probable qu'une meilleure approche consiste à déclarer les exceptions réelles dans la clause throws de la méthode.

-1

Vous devez appeler votre méthode avec quelque chose comme suit:

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

C'est juste faux. –

+0

@Esben, pourquoi? Pouvez-vous élaborer s'il vous plaît? – Shekhar

+0

Peu importe comment vous l'appelez, la définition de la méthode est toujours fausse. Alors peut-être que c'est plus hors de propos que faux. EDIT: Pour clarifier en Java, vous ne pouvez pas surcharger par une valeur de retour, donc assigner le résultat à une variable ne fait pas de différence quand la méthode elle-même est fausse. –

1

Vous attrapez une exception, mais rien de retour. Essayez ceci:

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

Ou mieux, ne pas attraper et déclarer votre méthode pour throws IOException

0

Ce que vous pouvez faire est de déclarer la valeur de retour avant votre bloc try-catch et de lui donner -1. Dans votre bloc try-catch, vous affectez la valeur. Après le bloc try-catch, vous le retournez.

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; 
}