qq_58553974 2022-02-12 17:20 采纳率: 96.2%
浏览 42
已结题

请问这个是什么意思呢

img


代码如下:package atm;

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);
try {
String type = a.next();
switch (type) {

            case "登录":
                // landing();
                break;
            case "注册":
                register(a, count);// 注册账户函数
                System.out.println("你的账户注册成功");
                break;
            default:
                System.out.println("你输入的指令有误");
            }
        } finally {
            a.close();
        }
    }
}

public static void register(Scanner a, ArrayList<Atm> count) {// 注册账户
    System.out.println("请你输入用户名");
    String username = a.next(); // 输入用户名
    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.next();
        System.out.println("请再次输入你的密码");
        String password1 = a.next();
        if (password.equals(password1)) { // 比较两次输入的密码
            return password;
        } else {
            System.out.println("你两次输入的密码不一样");
        }
    }
}

}

  • 写回答

3条回答 默认 最新

  • 冰棍hfv 2022-02-12 19:57
    关注

    出现这种情况是因为在finally {a.close();} 将输入流关了,你在while true语句里面重新new一个,System.in流也是默认关的。
    所以解决办法就是把try...finally去掉

    img

    本回答被题主选为最佳回答 , 对您是否有帮助呢?
    评论
查看更多回答(2条)

报告相同问题?

问题事件

  • 系统已结题 2月20日
  • 已采纳回答 2月12日
  • 修改了问题 2月12日
  • 修改了问题 2月12日
  • 展开全部

悬赏问题

  • ¥20 cad图纸,chx-3六轴码垛机器人
  • ¥15 移动摄像头专网需要解vlan
  • ¥20 access多表提取相同字段数据并合并
  • ¥20 基于MSP430f5529的MPU6050驱动,求出欧拉角
  • ¥20 Java-Oj-桌布的计算
  • ¥15 powerbuilder中的datawindow数据整合到新的DataWindow
  • ¥20 有人知道这种图怎么画吗?
  • ¥15 pyqt6如何引用qrc文件加载里面的的资源
  • ¥15 安卓JNI项目使用lua上的问题
  • ¥20 RL+GNN解决人员排班问题时梯度消失