以下Java不起作用,因为缺少return语句。我无法弄清楚出了什么问题。任何想法?
public String setusername(String u) {
if (username.length() > usernameLimit) {
System.out.println("overlimit");
} else {
return this.username = u;
}
}
即使我取出字符串u它也会产生相同的错误,如果我添加int usernameLimit它会给出相同的错误。
答案 0 :(得分:1)
您的代码使用分支(如果循环)。从编译器的角度来看,两个分支,即if和else块都可能被执行。 但回报只是在其他方面。 因此,编译器抱怨缺少回报。
解决方案1:尝试将if返回if(根据您的要求)
解决方案2:将你的回报移出If-Else结构。您可以使用变量来指定返回值,并在if或else中相应地填充它。
答案 1 :(得分:1)
你的return语句在else块中,所以编译器不知道在运行时函数是否会返回一些东西。
将其更改为
public String setusername(String u) {
String result="overlimit";
if (username.length() <= usernameLimit) {
this.username = u;
result=u;
}
return result;
}
应该可以正常工作
答案 2 :(得分:0)
if (username.length() > usernameLimit) {
System.out.println("overlimit");
////////////return what???
}
这是问题,该方法需要在username.length() > usernameLimit
答案 3 :(得分:0)
你必须在if子句的两个部分都有一个return语句。现在,只有在username.length()&lt; = usernameLimit时,您的函数才会返回一个String。试试这个:
public String setusername(String u) {
if (username.length() > usernameLimit) {
System.out.println("overlimit");
return(null);
} else {
return this.username = u;
}
}
答案 4 :(得分: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
}
}