为啥我的集合count(注册一个账户后)在登陆里面长度还是为0

代码如下package atm;

import java.util.ArrayList;
import java.util.Random;
import java.util.Scanner;

public class Atm2 {

public static void main(String[] args) {
    while (true) {
        System.out.println("请选择所需要的功能:");
        System.out.println("登录");
        System.out.println("注册");
        ArrayList<Atm1> count = new ArrayList<>(); // 集合储存账户对象
        Scanner a = new Scanner(System.in);
        String type = a.next();
        switch (type) { // 输入功能
        case "登录":
            landing(a, count);
            break;
        case "注册":
            register(a, count); // 注册函数调用注册功能
            break;
        default:
            System.out.println("你的指令有误");
        }
    }
}

public static void register(Scanner a, ArrayList<Atm1> count) { // 注册功能
    System.out.println("-------------------注册------------------");
    System.out.println("请输入用户名");
    String username1 = a.next(); // username1为用户名
    System.out.println("请输入当次取现额度");
    double limitmoney1 = a.nextDouble(); // limitmoney1为当次取现额度
    String name2 = maybename(a, count); // 接收生成的一个随机账号
    Atm1 ab = maybename1(count, name2); // 判断账号是否重复(接受对象)
    if (ab == null) {
        System.out.println("你的账号是:" + name2); // name2为账号
    }
    String password1 = password(a); // 接收密码为password1
    System.out.println("你的账户注册成功");
    Atm1 abc = new Atm1(username1, name2, password1, limitmoney1);
    count.add(abc);

}

public static String maybename(Scanner a, ArrayList<Atm1> count) {
    String name1 = "";
    Random sc = new Random();
    for (int i = 0; i < 8; i++) // 生成一个随机的八位数账号
    {
        name1 += sc.nextInt(10);
    }
    return name1;
}

public static Atm1 maybename1(ArrayList<Atm1> count, String name2) { // 判断账号是否重复
    for (int i = 0; i < count.size(); i++) {
        Atm1 a = count.get(i);
        if (a.getName().equals(name2)) {
            return a; // 重复
        }
    }
    return null; // 没有重复
}

public static String password(Scanner a) { // 确认一个密码
    while (true) { // 循环到两次密码一样为止
        System.out.println("请你输入密码");
        String password1 = a.next();
        System.out.println("请你再次输入密码");
        String password2 = a.next();
        if (password1.equals(password2)) {
            return password1; // 密码一样
        } else { // 密码不一样
            System.out.println("你两次输入的密码不一样,请你重新输入");
        }
    }

}

public static void landing(Scanner a, ArrayList<Atm1> count) { // 登录功能
    System.out.println(count.size());
    if (count.size() == 0) {
        System.out.println("请你先注册,再登录");
        return;
    }

    System.out.println("---------------登录---------------");
    System.out.println("请你输入账号");
    String name1 = a.next();
    Atm1 count2 = maybename1(count, name1);
    if (count2 == null) { // 账号正确
        while (true) { // 循环,直到密码正确为止
            System.out.println("请你输入密码");
            String password1 = a.next(); // 接收判断密码正确对象
            Atm1 b = password(count, password1);
            if (b != null) { // 密码正确
                System.out.println("恭喜你登录成功");
            } else {
                System.out.println("你的密码错误"); // 密码错误
            }
        }
    } else { // 账号不存在
        System.out.println("你的账号不正确");
    }

}

public static Atm1 password(ArrayList<Atm1> count, String password) { // 判断密码是否正确
    for (int i = 0; i < count.size(); i++) {
        Atm1 a = count.get(i);
        if (a.getPassword().equals(password)) {
            return a; // 正确
        }
    }
    return null; // 错误
}

}
运行结果如下

img

你截图的输出和你的代码对应不上呀,密码之后不是还有“请输入当次取现额度”吗





import java.util.ArrayList;
import java.util.Random;
import java.util.Scanner;

public class Atm1 {
public static void main(String[] args) {
ArrayList count = new ArrayList<>();// 集合里面装账户对象

while (true) { // 定义一个死循环,登录和注册
System.out.println("请你输入要执行的功能");
System.out.println("登录");
System.out.println("注册");

        
Scanner a=new Scanner(System.in);
            String type = a.nextLine();
            switch (type) {
 
            case "登录":
                // landing();
                break;
            case "注册":
                register(a, count);// 注册账户函数
                System.out.println("你的账户注册成功");
                break;
            default:
                System.out.println("你输入的指令有误");
            }
        } 
    
}
 
public static void register(Scanner a, ArrayList<Atm> count) {// 注册账户
    System.out.println("请你输入用户名");
    String username = a.nextLine(); // 输入用户名
    System.out.print("你的账号是:");
    String name = zhanghao(count); // 生成一个账号是一个功能,另设一个函数 name是账号
    System.out.println(name);
    String password = password(a);// 输入一个密码功能 password是密码
    System.out.println("请输入当次取现额度");
    double limitmoney = a.nextDouble();
    Atm count1 = new Atm(username, password, name, limitmoney);
    count.add(count1);
    System.out.println("你的账户创建成功");
    System.out.println(username);
    System.out.println(password);
    System.out.println(name);
    System.out.println(limitmoney);
 
}
 
public static String zhanghao(ArrayList<Atm> count) {
    while (true) {
        int c = 0;
        String name = "";
        Random b = new Random();
        for (int i = 0; i < 8; i++) {
            name += b.nextInt(10);
        }
        for (int i = 0; i < count.size(); i++) {
            Atm name1 = count.get(i);
            if (name1.getName().equals(name)) {
                c = 1;
                break;
            }
        }
        if (c == 0) {
            return name;
        }
    }
 
}
 
public static String password(Scanner a) // 定义一个密码
{
    while (true) {
        System.out.println("请输入你的密码");
        String password = a.nextLine();
        System.out.println("请再次输入你的密码");
        String password1 = a.nextLine();
        if (password.equals(password1)) { // 比较两次输入的密码
            return password;
        } else {
            System.out.println("你两次输入的密码不一样");
        }
    }
}
}
class Atm{
    private String username;private String  password;private String name;private Double limitmoney;

    public String getUsername() {
        return username;
    }

    public void setUsername(String username) {
        this.username = username;
    }

    public String getPassword() {
        return password;
    }

    public void setPassword(String password) {
        this.password = password;
    }

    public String getName() {
        return name;
    }

    public void setName(String name) {
        this.name = name;
    }

    public Double getLimitmoney() {
        return limitmoney;
    }

    public void setLimitmoney(Double limitmoney) {
        this.limitmoney = limitmoney;
    }

    public Atm(String username, String password, String name, Double limitmoney) {
        this.username = username;
        this.password = password;
        this.name = name;
        this.limitmoney = limitmoney;
    }
    
}

img


放出去,每次都是新new的,里面当然是空的

将Count设置为全局变量试下