代码如下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; // 错误
}
}
运行结果如下
你截图的输出和你的代码对应不上呀,密码之后不是还有“请输入当次取现额度”吗
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;
}
}
将Count设置为全局变量试下