繁体   English   中英

我的 java 方法返回语句有问题,我在 if-else 语句中为未初始化的变量赋值

[英]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"

  1. 迭代会将“A”与“A”进行比较,然后将字符串 output 设置为“用户 A 已存在!”
  2. 迭代将“B”与“A”进行比较,然后将“A”添加到列表中,并将 output 字符串设置为“已添加用户 A”
  3. 迭代会将“C”与“A”进行比较,然后将“A”添加到列表中,并将 output 字符串设置为“已添加用户 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.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM