编程语言
首页 > 编程语言> > JavaeSe补漏

JavaeSe补漏

作者:互联网

Java

String

String字符串对比API

字符串比对时

​ 使用(==)比对的时地址

​ 使用equals()比较时,只关心内容,不在乎其他的

方法名 说明
public boolean equals(Object anObject) 将此字符串与指定对象进行比较,只关心字符内容是否一至
public boolean equalsIgnoreCase(String antherString) 将此字符串与指定对象进行比较,忽略大小写比较字符串,只关心字符内容是否一至.

String常用API

方法名 说明
pubilc int length() 返回此字符串的长度
pubilc char charAt(int index) 获取某个索引位置处的字符
public char[] toChaorArray() 将当前字符串转换成字符数组返回
public String substring(int beginIndex,int endIndex) 根据开始和结束索引进行截取,得到新的字符串(包前不包后)
public String substring(int beginIndex) 从传入的索引处截取,截取到末尾,得到新的字符串
public String replace(CharSequence target替换前,charSequence replacemen替换后t) 使用新值,将字符串中的旧值替换,得到新的字符串.
public String[] split(String regex) 根据传入的规则切割字符串,得到字符串数组返回

String应用

手机号加密

package com.yu.lesson02;

import java.util.Scanner;

public class iphone {
    public static void main(String[] args) {
        Scanner sc =new Scanner(System.in);
        System.out.println("请输入您的手机号:");
        String callphone = sc.next();
        String a = callphone.substring(0,3);
        String b = callphone.substring(7);
        System.out.println(a+"****"+b);
    }
}

image-20220509105819361

ATM系统

package com.yu.ATMTest;
/*
* ATM属性类*/
public class AtmClass {
    private String name;//用户姓名
    private String id;//卡号
    private String pwd;//密码
    private float blance;//余额
    private float quota;//取现额度

    public AtmClass(String name, String id, String pwd, float blance, float quota) {
        this.name = name;
        this.id = id;
        this.pwd = pwd;
        this.blance = blance;
        this.quota = quota;
    }

    public AtmClass() {
    }

    public String getName() {
        return name;
    }

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

    public String getId() {
        return id;
    }

    public void setId(String id) {
        this.id = id;
    }

    public String getPwd() {
        return pwd;
    }

    public void setPwd(String pwd) {
        this.pwd = pwd;
    }

    public float getBlance() {
        return blance;
    }

    public void setBlance(float blance) {
        this.blance = blance;
    }

    public float getQuota() {
        return quota;
    }

    public void setQuota(float quota) {
        this.quota = quota;
    }

}
package com.yu.ATMTest;

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

/*
* ATM入口类
* */
public class ATMSystem {
    public static void main(String[] args) {
        //1.定义账户类
        //2.定义一个集合,存储全部账号进行业务操作
        ArrayList<AtmClass> accounts = new ArrayList<AtmClass>();
        //创建键盘录入对象
        Scanner sc= new Scanner(System.in);
        //3.创建首页
        while (true) {
            System.out.println("-------------------------黑马ATM系统------------------------------");
            System.out.println("1.账户登录");
            System.out.println("2.账户注册");
            System.out.print("请输入要选择的操作:");
            int comand = sc.nextInt();
            switch (comand){
                case 1:
                    //用户登录
                    login(accounts,sc);
                    break;
                case 2:
                    //用户注册
                    register(accounts,sc);
                    break;
                default:
                    System.out.println("你输入的操作有误!!!");
                    System.out.println("请重新输入");
            }
        }

    }

    /**
     * 登录功能
     * @param accounts
     * @param sc
     */
    private static void login(ArrayList<AtmClass> accounts, Scanner sc) {
        //1.判断账户集合中是否存在账户,如果不存在账户当前方法不能实现
        if(accounts.size()==0){
            System.out.println("对不起,当前系统中,无任何账户,请你先开户,再来登录~~");
            return;
        }
        //2.正式进入登录操作
        System.out.println("请您输入登录卡号");
        while (true) {
            String cardId = sc.next();
            //3.判断卡号是否存在,根据卡号去账户集合中查询账户登录
            AtmClass atm = getAtmClassByCardId(cardId,accounts);
            if(atm != null){
                //卡号存在
                while (true) {
                    //4.接收用户输入的密码,并判断与当前账户密码是否一至
                    System.out.println("请输入登录密码:");
                    String password = sc.next();
                    if(atm.getPwd().equals(password)){
                        System.out.println("恭喜您"+atm.getName()+"登录成功!,您的卡号为:"+atm.getId());
                        //登录后的界面显示
                        showUserComand(atm,sc,accounts);
                        return;
                    }else{
                        System.out.println("当前密码有错误请重新输入");
                    }
                }
            }else{
                //卡号不存在
                System.out.println("你输入的卡号有误,请重新输入卡号");
            }
        }

    }

    /**
     * 显示登陆后的操作页
     */
    private static void showUserComand(AtmClass atm,Scanner sc ,ArrayList<AtmClass> accounts ) {
        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.注销账户");
            int comand = sc.nextInt();
            switch (comand){
                case 1://查询账户
                    showAtmClass(atm);
                    break;
                case 2://存款
                    depositMoney(atm,sc);
                    break;
                case 3://取款
                    drawMoney(atm,sc);
                    break;
                case 4://转账
                    transferMoney(sc,atm,accounts);
                    break;
                case 5://修改密码
                    updatePWD(atm,sc);
                    return;
                case 6://退出
                    System.out.println("退出成功,欢迎下次再来~~");
                    return;//停止当前方法
                case 7://注销账户
                    //从当前账户集合中,删除当前账户
                    accounts.remove(atm);
                    return;
                default:
                    System.out.println("您输入的命令有误!");
            }
        }
    }

    /**
     * 修改用户密码
     * @param atm 当前账户
     * @param sc 扫描器
     */
    private static void updatePWD(AtmClass atm, Scanner sc) {
        System.out.println("****************用户密码修改****************");
        System.out.println("请输入当前账户密码:");
        while (true) {
            if(atm.getPwd().equals(sc.next())){
                while (true) {
                    System.out.println("请输入新的账户密码:");
                    String mm = sc.next();
                    System.out.println("请再次输入新的账户密码:");
                    if (mm.equals(sc.next())){
                        atm.setPwd(mm);
                        System.out.println("密码修改成功!");
                        return;
                    }else{
                        System.out.println("两次密码输入不一样");
                    }
                }

            }else{
                System.out.println("输入密码有误,请重新输入");
            }
        }

    }

    /**
     * 转账功能
     * @param sc 扫描器
     * @param atm 自己的账户对象
     * @param accounts 全部账户的集合
     */
    private static void transferMoney(Scanner sc, AtmClass atm, ArrayList<AtmClass> accounts) {
        System.out.println("******************用户转账操作******************");
        //1.判断用建是否有两个账户
        if(accounts.size()<2){
            System.out.println("当前系统账户不足2个,无法进行转账操作,快去开户吧~~");
            return;
        }
        //2. 判断当前账户是否有钱
        if(atm.getBlance()==0){
            System.out.println("当前账户余额不足,无法进行转账操作");
            return;
        }
        //3.开始转账
        while (true) {
            System.out.println("请输入对方账户卡号:");
            String cardId = sc.next();
            //这个卡号不能是自己的卡号
            if(cardId.equals(atm.getId())){
                System.out.println("对不起,你不能对自己进行转账!");
                continue;//进行下次输入账号的判断
            }
            //判断这个卡号是否存在,根据卡号取查询对方账户对象
            AtmClass atm2 = getAtmClassByCardId(cardId,accounts);
            if(atm2 == null){
                //当前账号不存在
                System.out.println("当前账号不存在");
            }else{
                //当前账号存在,进行姓氏认证
                System.out.println("请您输入:*"+atm2.getName().substring(1)+"的姓氏:");
                String xing = sc.next();
                if(atm2.getName().startsWith(xing)){
                    while (true) {
                        System.out.println("请输入转账金额:");
                        float zz = sc.nextFloat();
                        if(zz>atm.getBlance()){
                            System.out.println("当前账户余额不足!,您的余额为:"+atm.getBlance());
                        }else{
                            //余额足够,进行转账
                            atm.setBlance(atm.getBlance()-zz);
                            atm2.setBlance(atm2.getBlance()+zz);
                            System.out.println("转账成功,您的账户余额为:"+atm.getBlance());
                            return;
                        }
                    }
                }else{
                    System.out.println("对不起,你您输入的信息有误");
                }
            }
        }
    }

    private static void drawMoney(AtmClass atm, Scanner sc) {
        System.out.println("******************用户取款操作******************");
        if(atm.getBlance()<100){
            //1.ATM机最少取款金额100
            System.out.println("你的余额不足100,请充值后再取~");
            return;
        }
        //2.提示用户输入取款金额
        while (true) {
            System.out.println("请输入取款金额:");
            float quk = sc.nextFloat();
            if(atm.getBlance()<quk){
                System.out.println("账户余额不足请充值后再取.");
                return;
            }else if(quk<atm.getQuota()){
                atm.setBlance(atm.getBlance()-quk);
                System.out.println("取款成功!取款金额为:"+quk);
                showAtmClass(atm);
                return;
            }else{
                System.out.println("取款金额大于取款上限!每次最多可取:"+atm.getQuota());
            }
        }
    }

    private static void depositMoney(AtmClass atm, Scanner sc) {
        System.out.println("****************用户存钱操作******************");
        System.out.println("请入你要存的金额:");
        atm.setBlance(atm.getBlance()+sc.nextFloat());
        showAtmClass(atm);
    }

    /**
     * 显示账户信息
     * @param atm
     */
    private static void showAtmClass(AtmClass atm) {
        System.out.println("****************当前账户信息****************");
        System.out.println("卡号"+atm.getId());
        System.out.println("户主"+atm.getName());
        System.out.println("余额"+atm.getBlance());
        System.out.println("每次取现上限"+atm.getQuota());
    }

    //用户开户功能实现  传入Scanner节省内存空间
    public static void register(ArrayList<AtmClass> array,Scanner sc){
        System.out.println("***********************系统开户操作***********************");
        //创建一个接收信息的对象,方便后期存储
        AtmClass atmClass = new AtmClass();
        //2.录入当前这个账户的信息,注入到账户对象中去
        System.out.println("请输入开户人姓名");
        atmClass.setName(sc.next());
        while (true) {
            System.out.println("请输入开户人密码");
            String mm1 = sc.next();
            System.out.println("请再次输入开户人密码");
            String mm2 = sc.next();
            if(mm1.equals(mm2)){
                //密码认证成功,可注入到用户信息中
                atmClass.setPwd(mm1);
                break;//结束循环
            }else{
                System.out.println("两次密码输入不一致,请重新输入");
            }
        }
        System.out.println("请输入账户每日取现上限:");
        atmClass.setQuota(sc.nextFloat());
        //随机生成一个账号
        String card = getRandomCardId(array);
        atmClass.setId(card);
        //3.把注册好的账户放到账户集合中去
        array.add(atmClass);
        System.out.println("恭喜您"+atmClass.getName()+"账户注册完成,您的卡号是"+atmClass.getId()+",请你妥善保管.快去使用吧!(*^_^*)");
    }
    //为账户生成一个与其他账户不同的卡号
    public static String getRandomCardId(ArrayList<AtmClass> array) {
        Random r = new Random();
        while (true) {
            //1.生成8位数字
            String randomCardId = "";
            for (int i = 0; i <8; i++) {
                randomCardId += r.nextInt(10);
            }
            //2.判断此账号与其他账号账号是否重复
            AtmClass atm = getAtmClassByCardId(randomCardId,array);
            if(atm == null){
               return randomCardId;
            }
        }
    }
    private static AtmClass getAtmClassByCardId(String cardId,ArrayList<AtmClass> array){
        for (int i = 0; i < array.size(); i++) {
            AtmClass atm = array.get(i);
            if(cardId.equals(atm.getId())){
                return atm;
            }
        }
        return null;//查无此账号
    }
}

标签:补漏,String,atm,System,sc,JavaeSe,println,out
来源: https://www.cnblogs.com/yuxxiao/p/16250173.html