2013-03-31 123 views
1

以下Java不起作用,因爲缺少返回語句。我無法弄清楚什麼是錯的。有任何想法嗎?缺少返回狀態錯誤

public String setusername(String u) {  
    if (username.length() > usernameLimit) { 
     System.out.println("overlimit"); 
    } else { 
     return this.username = u; 
    } 
} 

即使我拿出字符串u它給出了相同的錯誤,如果我添加int usernameLimit它給出了相同的錯誤。

回答

1

你的代碼使用分支(如果循環)。從編譯器的角度來看,兩個分支即if和else塊都可能被執行。 但是,返回只在其他塊。因此,編譯器抱怨缺少返回。

解決方法1:嘗試把返回如果塊以及(根據您的要求)

溶液2:將你的回報了的if-else結構的。您可以使用變量來指定返回值並在if或else中相應地填充它。

0
if (username.length() > usernameLimit) { 
    System.out.println("overlimit"); 
    ////////////return what??? 
} 

這裏的問題是,該方法需要返回語句時username.length() > usernameLimit

0

您必須在if子句的兩個部分return語句。現在你的函數只有在username.length()爲< = usernameLimit時才返回一個字符串。試試這個:

public String setusername(String u) {  
if (username.length() > usernameLimit) { 
    System.out.println("overlimit"); 
    return(null); 
} else { 
    return this.username = u; 
} 
} 
1

你的return語句在else塊中,所以編譯器不知道在運行時函數是否會返回一些東西。

將其更改爲

public String setusername(String u) { 
String result="overlimit"; 
if (username.length() <= usernameLimit) { 
    this.username = u; 
    result=u; 
} 
return result; 
} 

應該正常工作

0

假設這個問題是有關您剛纔的問題,Java String Limit,你可能不需要在setusername()方法來使用return語句。

import java.io.*; 

public class UserNameTest { 
    private static final int USER_NAME_LIMIT=6; // constants should be all UPPERCASE_WITH_UNDERSCORES 

    private String userName; // variable names should be in camelCase 

    private String getUserName() { 
     // normally you write a getter method to obtain value 
     return userName; 
    } 

    private void setUserName(String u) { 
     // setter method would not require a return statement, 
     // if all you trying to do is to validate and set the new value. 

     if (u.length() > USER_NAME_LIMIT) { // validate length of new value 
      // good practice to be descriptive when giving error messages 
      System.out.println("Given user name [" + u + "] is longer than valid limit [" + USER_NAME_LIMIT + "]"); 
     } else { 
      this.userName = u; 
     } 
    } 

    public static void main(String[] args) throws IOException { 
     BufferedReader br = new BufferedReader(new InputStreamReader(System.in)); 
     String inputString = br.readLine(); 

     UserNameTest q1 = new UserNameTest(); 
     q1.setUserName(inputString); // set user name retrieved through input 

     System.out.println("New user name: " + q1.getUserName()); // get user name for other operations 
     // if setUserName() above rejected the input value due to length exceeding, here you will see 'null' 
     // as we have not set user name to anything beforehand 
    } 

} 

閱讀和了解編碼標準以及http://geosoft.no/development/javastyle.html