调用销户方法后提示销户成功,但是还能查询到账户信息

调用销户方法后提示销户成功,但是还能查询到账户信息

import java.util.Scanner;
class Bank{
	String name;
	int id;
	int money;
	int key;
	public Bank(String name,int id,int money,int key){
		this.name=name;
		this.id=id;
		this.money=money;
		this.key=key;
	}
}

class BankDemo{
	//存钱
	public static void inPut(Bank n){
		Scanner sc=new Scanner(System.in);
		if(n==null){
			System.out.println("账户为空请添加");
		}else{
			while(true){
				System.out.println("请输入您要存入的钱数(最少1元最多10000)");
				int i=sc.nextInt();
				if(i<1){
					System.out.println("您存入的金额过小,请重新加入");
				}else if(i>10000){
					System.out.println("您存入的金额过多,默认已为您存入10000元,多余钱款已退回请您收好");
					n.money=10000;
					break;
				}else{
					n.money=i;
					break;
				}
			}
		}
	}
	//取钱
	public static void get(Bank n){
		Scanner sc=new Scanner(System.in);
		if(n==null){
			System.out.println("账户为空请添加");
		}else{
			cd:while(true){
				System.out.println("请输入您要取出的金额(1~5000)");
				int i=sc.nextInt();
				if(i>n.money){
					System.out.println("您输入的金额大于账户余额请重新输入");
				}else if(i<1){
					System.out.println("您输入的金额过小请重新输入");
				}else if(i>5000){
					System.out.println("您输入的金额大于5000,系统已默认取出5000请您收好");
					n.money-=5000;
					break cd;
				}else{
					n.money-=i;
					break cd;
				}
			}
		}
	}
	//显示余额
	public static void show(Bank n){
		if(n==null){
			System.out.println("账户为空请添加");
		}else{
			System.out.println("您的账户余额为:"+n.money+"元");
		}
	}
	//显示账户信息
	public static void man(Bank n){
		if(n==null){
			System.out.println("账户为空请添加");
		}else{
			System.out.println("姓名:"+n.name+",账号:"+n.id+",余额:"+n.money);
		}
	}
	//修改密码
	public static void changeKey(Bank n){
		Scanner sc=new Scanner(System.in);
		if(n==null){
			System.out.println("账户为空请添加");
		}else{
			while(true){
				System.out.println("请输入6位新密码");
				int j=sc.nextInt();
				if(j/100000>=10){
					System.out.println("您书的位数过多,请重新输入");
				}else if(j==n.key){
					System.out.println("您输入的密码与原密码相同请重新输入");
				}else{
					System.out.println("请再次录入密码");
					int i=sc.nextInt();
					if(i==j){
						n.key=j;
						break;
					}else{
						System.out.println("您输入的密码与上次密码不一致,更换密码失败");
						break;
					}
				}
			}
		}
	}
	//销户
	public static void delete(Bank n){
		if(n.money==0){
			n=null;
			System.out.println("账户已注销");	
		}else{
			System.out.println("您的账户余额不为0,无法销户");
		}
	}
	//创建账户
	public static void add(Bank n){
		Scanner sc=new Scanner(System.in);
		if(n==null){
			System.out.println("请输入姓名:");
			n.name=sc.next();
			System.out.println("请输入账号:");
			n.id=sc.nextInt();
			System.out.println("请输入密码:");
			n.key=sc.nextInt();
			System.out.println("姓名:"+n.name+",账号:"+n.id+",余额:"+n.money);
		}else{
			System.out.println("账户不为空无法添加");
		}
	}
	public static void main(String []args){
		//Bank b=null;
		Bank b=new Bank("卡卡",10001,0,123456);
		Scanner sc=new Scanner(System.in);
		System.out.println("欢迎使用奇葩银行坑人ATM机");
		int n=0;
		System.out.println("请输入密码:");
		int j=sc.nextInt();
		while(n<=1){
			if(j==b.key){
				break;
			}else{
				System.out.println("您的输入有误请重新输入");
				j=sc.nextInt();
			}
			n++;
		}
		if(n==2){
			System.out.println("你输入密码次数过多,账户已冻结");
			System.exit(0);
		}
		while(true){
			System.out.println("-----------------------");
			System.out.println("1,存钱");
			System.out.println("2,取钱");
			System.out.println("3,查询余额");
			System.out.println("4,查询账号信息");
			System.out.println("5,修改密码");
			System.out.println("6,注销账号");
			System.out.println("7,创建账户");
			System.out.println("8,退出");
			System.out.println("请您要进行操作的编号:");
			int k=sc.nextInt();
			System.out.println("-----------------------");
			switch(k){
				case 1:
					inPut(b);
					break;
				case 2:
					get(b); 
					break;
				case 3:
					show(b);
					break;
				case 4:
					man(b);
					break;
				case 5:
					changeKey(b);
					break;
				case 6:
					delete(b);
					break;
				case 7:
					add(b);
					break;
				case 8:
					System.out.println("欢迎您下次使用");
					return;
				default:
					System.out.println("您的输入有误,请重新输入!");
					break;
			}
		}
	}
}


正在回答

登陆购买课程后可参与讨论,去登陆

1回答
 //销户
    public static void delete(Bank n){
        if(n.money==0){
            n=null;
            System.out.println("账户已注销");   
        }else{
            System.out.println("您的账户余额不为0,无法销户");
        }
    }

即使你把传过来的Bank 置为null。也是改变不了外面的Bank b为空的。它只能改变属性值。一般的像你写的例子,会把Bank 放在一个集合中,注销时可以从集合中移除某Bank 对象。集合相关知识会在后续课程中学到。祝:学习愉快

  • 盖沧海 提问者 #1
    非常感谢!
    2018-03-22 17:18:20
问题已解决,确定采纳
还有疑问,暂不采纳

恭喜解决一个难题,获得1积分~

来为老师/同学的回答评分吧

0 星
请稍等 ...
微信客服

购课补贴
联系客服咨询优惠详情

帮助反馈 APP下载

慕课网APP
您的移动学习伙伴

公众号

扫描二维码
关注慕课网微信公众号

在线咨询

领取优惠

免费试听

领取大纲

扫描二维码,添加
你的专属老师