2011-08-02 74 views
2

我知道这看起来像是一个容易解决的问题,但我在这段代码中找不到我的错。我返回int,Eclipse告诉我'这个方法必须返回int类型的结果'。Java:返回值的问题

public static int getLastId(int table) { 

    Connection connection = null; 
    String url = "jdbc:postgresql://someServer:port/someDB"; 

    try { 
     //Verbindung herstellen 
     connection = DriverManager.getConnection(url, "someUser", 
       "somePassword"); 
     } catch (SQLException e1) { 
     //fehlerhafte Verbindung 
     // TODO Auto-generated catch block 
     e1.printStackTrace(); 
    } 

    try { 
     //0 - source ; 1 - destination Table 
     if(table == 0){ 

     Statement stmt = connection.createStatement(); 
     ResultSet lastId; 
     lastId = stmt.executeQuery("SELECT index FROM table0 ORDER BY someIndex DESC LIMIT 1"); 
     String theLastId0 = ""; 
     while(lastId.next()) 
      { 

       //System.out.print(lastId.getString("index")); 
       theLastId0 = lastId.getString("index"); 

      } 
      lastId.close(); 
      stmt.close(); 
      connection.close(); 
      int letzteId0 = Integer.parseInt(theLastId0); 

     return letzteId0; 

     }else if(table == 1){ 

      Statement stmt = connection.createStatement(); 
      ResultSet lastId; 
      lastId = stmt.executeQuery("SELECT index FROM table1 ORDER BY someIndexDESC LIMIT 1"); 
      String theLastId1 = ""; 
       while(lastId.next()) 
       { 

        //System.out.print(lastId.getString("index")); 
        theLastId1 = lastId.getString("index"); 

       } 
       lastId.close(); 
       stmt.close(); 
       connection.close(); 
       int letzteId1 = Integer.parseInt(theLastId1); 

      return letzteId1; 
      } 

    } 
    catch (SQLException e) { 

     System.out.println("Connection Failed! Check output console"); 
     e.printStackTrace(); 
     return -1; 
    } 
} 

回答

4

此方法必须始终返回一个int。

您必须在别人后面添加以下else语句

else { 
return 0; 
} 

,如果因为你的版本,你不要,如果你的,如果返回任何东西,你的否则,如果计算结果为假。

+0

非常感谢这是问题的最佳答案。即使我下班回家,我也不会想到的一件事是^^。有时你需要问一个问题,看看有时候会有多愚蠢。干杯。 – 1amtoo1337

10

如果table != 0table != 1会发生什么情况?那么你的方法不会返回任何东西。因此,您可以将else声明添加到if或者只是定期返回,并返回一个虚拟值,如-1。

即使你,程序员知道这种情况永远不会被执行,编译器也不知道,所以你必须让它快乐起来。加上令人讨厌的事情可以使用反射来完成,因此假设输入到您的方法是有效的,这绝不是一个好主意。

+0

tskuzzy,你的言论也绝对正确,但是因为曼努埃尔塞尔瓦给出了一个(在我看来)简洁,更好和更短的解释,他会得到答案。 – 1amtoo1337

1

如果table!= 0或1,那么你的代码不会返回任何东西。只需在最后添加return 0;或者任何适当的行为,那么你应该没问题。

为了将来的参考,如果指定了返回类型,您的方法必须在每个条件中返回一个值。如果有什么情况没有被返回,那么代码是错误的。希望能帮助到你!