用户修改信息 登陆用户出1外都不能修改 而且都能修改用户1 怎么回事啊



```    public String updateid(String id) {
        String s = "";

        for (int k = 0; k < Memory.userList.length; k++) {

            User user = Memory.userList[k];
            String id1 = Memory.userList[k].getId();
            if (id.equals(id1)) {
                s = "查询到相关信息为: " + Memory.userList[k];

                Scanner sc = new Scanner(System.in);

                System.out.println("请输入要修改的个人密码");
                Memory.userList[k].setPassword(sc.next());

                System.out.println("请输入要修改的家庭住址");
                Memory.userList[k].setAddress(sc.next());

                System.out.println("请输入要修改的电话号码");
                Memory.userList[k].setPhone(sc.next());

            } else {
                return s = "信息错误,修改失败!!";
            }

            System.out.println("修改成功!");
            return s = "修改的个人信息为:" + Memory.userList[k];

        }

        return s = "修改失败!";

    }


if (c == 2) {
System.out.println("请输入您的用户id:");
String s = sc.next();
System.out.println(dao.updateid(s));

                            }

```

你贴的代码的核心逻辑是:
第10行【if (id.equals(id1)) 】是判断传入的id和Memory.userList[k]的id是否相等,相等则进入11-23行的修改逻辑,然后执行第28-29行返回修改成功相应的信息;
如果不相等则执行24-25行,返回修改失败的信息。
所以第6行的循环只会执行一次,即k为0的那次。
改起来很简单,把25行的:【return s = "信息错误,修改失败!!";】
改为:【continue;】即可,如果不相等不应该直接返回,而是进行下一次判断

不能修改是报错吗

你的问题在于return s = "信息错误,修改失败!!";这句话一执行你的程序就结束了。
所以不能使用return语句,改成continue;就行了

欢迎使用用户管理系统
1.登录
2.退出


请输入操作功能
1
请输入用户名:
4
请输入密码:
4
普通用户操作功能
1.查看全部用户信息
2.按年龄查看用户信息
3.修改自己的用户信息
0.返回
请输入你的操作功能:


3
普通用户信息修改*
1.根据用户名修改信息 2.根据用户id修改信息
2
请输入您的用户id:
4
Exception in thread "main" java.lang.NullPointerException: Cannot invoke "entity.User.getId()" because "db.Memory.userList[k]" is null
at dao.UserDAO.updateid(UserDAO.java:207)
at pages.Test.main(Test.java:198)