![](/img/trans.png)
[英]Why if-else if-else (within a loop) in method gives “return statement missing” while all if-else branches have a return statement?
[英]I have a problem with a java method return statement, I have given value for an un-initialized variable in an if-else statement
//Checks if a user exists in an ArrayList or not.
static String addUser(String x) {
String output;
for(int i = 0; i < usersArray.size(); i++) {
if (usersArray.get(i).equals(x)) {
output = String.format("User %s already exists!", x);
} else{
usersArray.add(x);
output = String.format("User %s is added", x);
}
}
return output;
}
如果我在方法addUser
开始时初始化output
,它只会返回该值,而我希望该值根据条件进行切换。
错误声明: Variable 'output' might not have been initialized
您可以使用包含。
String addUser(List<String> users, String user) {
if (users.contains(user)) {
return String.format("User %s already exists!", user);
} else {
users.add(user);
return String.format("User %s is added", user);
}
}
你可以使用这个。
String checkUserExists(String x, List<String> usersArray) {
String output;
if(usersArray.contains(x)) {
output = String.format("User %s already exists!", x);
} else {
usersArray.add(x);
output = String.format("User %s is added", x);
}
return output;
}
你的问题是你的逻辑根本不正确。
您迭代您的 List 并检查您的迭代的当前元素是否等于您要添加的用户,如果它等于您将设置您的 output 字符串并继续迭代的用户,如果不是,您添加新的字符串到您的列表并继续迭代。
因此,假设您的列表包含元素["A", "B", "C"]
并且您想要添加"A"
因此,尽管“A”已经在列表中,但您仍然添加了两次,并简单地将“已经存在”消息替换为新消息。
您的逻辑中的错误是,在您完全完成迭代之前,您无法判断您的 List 是否已经包含该项目。
其他答案已经为您提供了 List contains 方法的解决方案,但这里有一个简单的 for 循环迭代的解决方案:
static String addUser(String x) {
for(int i = 0; i < usersArray.size(); i++) {
if (usersArray.get(i).equals(x)) {
// if we find that the user already is in the list we return immediately from the loop
return String.format("User %s already exists!", x);
}
}
// if the loop finishes running the user to add wasn't found in the list
usersArray.add(x);
return String.format("User %s is added", x);
}
声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.