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);
}
}
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