2015-10-19 79 views
-1

我還是新來的這可以請幫助我在下面,因爲我得到「缺少返回聲明」錯誤。Java示例登錄 - 缺少返回

public static Person login(ArrayList<Person> per, String password, int idint) 
    { 
     for (Person currentPerson : per) 
       { 
         if (idint == currentPerson.Id) 
         { 
         if (currentPerson.password.equals(password)){ 
          System.out.println("Login Succesfully!"); 
          return currentPerson; 
         } 
         else 
         {System.out.println("Incorrect password. Try again"); 
          return null; 
         }} 
        else { 
         System.out.println("User not found. Try again"); 
         return null; 
        } 
       } 

    } 

其中每個人是我的人數組列表。我需要在找到時返回此人。

+0

您必須在方法結尾有返回語句。所以'返回null;'就在最後一個括號的上方。 – 3kings

+0

但返回null將最終總是返回null? –

+0

哦所以,返回一些東西? IDK的。我只是告訴你該把它放在哪裏 – 3kings

回答

0

還有兩種情況需要考慮。

  1. per列表爲空或空。
  2. idint不在列表中。

您可以覆蓋那些2案件只是增加只有兩個語句,其他的答案說。

public static Person login(ArrayList<Person> per, String password, int idint) { 
     //null list or empty list 
     if(per == null || per.size() == 0) 
      return null; 
     for (Person currentPerson : per) { 
      if (idint == currentPerson.Id) { 
       if (currentPerson.password.equals(password)) { 
        System.out.println("Login Succesfully!"); 
        return currentPerson; 
       } else { 
        System.out.println("Incorrect password. Try again"); 
        return null; 
       } 
      } else { 
       System.out.println("User not found. Try again"); 
       return null; 
      } 
     } 
     //Person is not present in the list 
     return null; 

    } 

您應該考慮使用HashMap代替ArrayList的保持Person對象,它將保證沒有重複的Person對象相同Person並能與給定id的Person對象即時實時訪問。

0

編譯器給你錯誤,因爲currentPerson可以是空的,因此你永遠不會進入循環。

但是,你真的關閉你只需要移動

System.out.println("User not found. Try again"); 
return null; 

圈外,

你現在退出的第一Personif idint == currentPerson.Id循環,你檢查密碼,然後退出其他你退出...你永遠不會循環它們。

 for (Person currentPerson : per) 
      { 
       if (idint == currentPerson.Id) 
       { 
        if (currentPerson.password.equals(password)){ 
         System.out.println("Login Succesfully!"); 
         return currentPerson; 
        } 
        else 
        { 
         System.out.println("Incorrect password. Try again"); 
         return null; 
        } 
       } 

      } 

      System.out.println("User not found. Try again"); 
      return null;