9.常用API
①导包
API:全程应用程序编程接口,是别人写好的一些代码,方便程序员直接拿去调用以提高开发效率。
包:包是分门别类管理程序的,别人写好的程序通常都放在对应的包种进行管理和维护。
建包的语法格式:
自动导包
包的注意事项:
package a; import b.Teacher; import java.util.Random; import java.util.Scanner; public class test_a { public static void main(String[] args) { //导包的注意事项 // 1.同一个包下的类,可以直接互相调用 Student s1 = new Student(); s1.printStudent(); // 2.不同包下,需要导入包,import+包名.类名 Teacher t1 = new Teacher(); //3.要调用java提供的程序,需要先导包才可以使用,但是java.lang中的包可以直接使用 Scanner s2 = new Scanner(System.in); Random r1 = new Random(); //4.当前程序中如果要调用多个不同包下的程序且这些程序类名一致,此时默认值只能导入一个,另一个需要输入全称。 Teacher t = new Teacher(); t.printTeacher(); a.Teacher t2 = new a.Teacher(); t2.printTeacher(); } } • 1
②字符串(String)
拓展练习题:
package page_2024_4_9; public class class_2024_4_9 { public static void main(String[] args) { //题目1:下面两个代码分别创建几个对象? String s2 = new String("abc");//这个abc是先放在常量池中,再拿到堆中的,创建两个对象 String s1 = "abc";//这个abc是放在常量池中的,但是前面已经创建了,所以只创建一个对象 System.out.println("-------------"); System.out.println(s2 == s1); System.out.println("-------------"); //题目2:阅读下面程序,请写出程序的打印结果是多少? String b1 = "abc"; String b2 = "ab"; String b3 = s2 + "c";//注意,如果需要变量参与运算时候,要放在堆中进行运算 System.out.println("-------------"); System.out.println(b1 == b3); System.out.println("-------------"); //题目3:阅读下面程序,请写出程序的打印结果是多少? String c1 = "abc"; String c2 = "a" + "b" + "c"; System.out.println("-------------"); System.out.println(c1 == c2); System.out.println("-------------"); } }
案例1:完成用户登录
private static void test2() { //开发一个登录验证的逻辑 int count = 3; do { //1.首先要接收用户输入的账号和密码 Scanner sc = new Scanner(System.in); System.out.println("请输入您的账号"); String Account = sc.next(); System.out.println("请输入您的密码"); String password = sc.next(); //2.判断账号密码是否正确的函数 boolean check = Checkpassword(Account,password); if(check) { System.out.println("欢迎进入系统"); break; } else { System.out.println("账号/密码有误"); } count--; }while(count!=0); if(count == 0) System.out.println("3次机会已经用完~~"); } private static boolean Checkpassword(String Account,String password) { //定义正确的账号与密码 String okAccount = "suziguang"; String okpassword = "123456"; //返回 return Account.equals(okAccount) && password.equals(okpassword); }
案例2:使用String来开发验证码
private static void test3() { //制造验证码 String code = CreatCode(4); System.out.println(code); } private static String CreatCode(int n) { String code = ""; String data = "abcdefghijklmnopqrstuvwxyzABCDEFGIJKLMNOPQRSTUVWXYZ0123456789"; Random r = new Random(); for (int i = 0; i < n; i++) { int k = r.nextInt(data.length()); code += data.charAt(k); } return code; }
③集合(ArrayList)
集合的概念:集合是一种容器,类似于数组,用来储存数据。
注:集合是一种泛类型,ArrayList<>可以用来限制类型
集合的特点:长度灵活可变(相较于数组大小固定而言)
集合的种类:ArrayList、TreeSet、LinkedList…
集合提供的各种接口:
private static void test4() { ArrayList<String> list = new ArrayList(); //1.add尾插,返回是否插入成功 list.add("zhaoyun"); list.add("zhugeliang"); System.out.println(list); //2.pos插入,返回void list.add(1,"zhangfei"); System.out.println(list); //3.get返回指定索引处的元素 System.out.println(list.get(0)); //4.size,返回集合中的元素个数 System.out.println(list.size()); //5.remove,删除指定索引处的元素,并返回该元素 System.out.println(list.remove(0)); System.out.println(list); //6.remove,删除指定元素,并返回是否成功 System.out.println(list.remove("zhugeliang")); System.out.println(list); //7.修改指定索引处的元素,返回被修改的元素 System.out.println(list.set(0, "zhaozilong")); System.out.println(list); }
技巧:删除集合元素的技巧
private static void PopElements() { ArrayList<String> list = new ArrayList(); list.add("张飞"); list.add("赵子龙"); list.add("李云龙"); list.add("龙"); list.add("赵云"); list.add("刘备"); System.out.println(list); //方法一,删除之后i--; /*for (int i = 0; i < list.size(); i++) { String ele = list.get(i); if(ele.contains("龙")) { list.remove(i); i--; } }*/ //方法二:从后面往前删除 for (int j = list.size() - 1; j >= 0; j--) { String ele = list.get(j); if(ele.contains("龙")) { list.remove(j); } } System.out.println(list); }
案例:菜品上架
小技巧:在java的switch中可以中用String来做参数,防止有其他类型的元素造成直接代码崩溃。
package testpage_2024_4_10; public class test { //完成菜品上架以及展示的功能 public static void main(String[] args) { //1.首先要创建一个food类,就是一个空白的表格 //2.创建一个food操作方法类,用来对集合进行操作 FoodOperation op = new FoodOperation(); op.start(); } }
package testpage_2024_4_10; import java.util.ArrayList; import java.util.Scanner; public class FoodOperation { private ArrayList<Food> FoodList = new ArrayList<>(); //1.add功能 public void add() { Food food = new Food(); Scanner sc = new Scanner(System.in); //1.输入 System.out.println("请输入您要添加的菜品名称"); String name = sc.next(); food.setName(name); System.out.println("请输入您要添加的菜品价格"); String price = sc.next(); food.setPrice(price); System.out.println("请输入您要添加的菜品描述"); String desc = sc.next(); food.setDesc(desc); FoodList.add(food); System.out.println("菜品上架成功!"); } //2.展示功能 public void show(){ if(FoodList == null) { System.out.println("没有商品"); return; } Food food = new Food(); System.out.println("------------------------"); for(int i = 0;i<FoodList.size();i++) { food = FoodList.get(i); System.out.println("商品的名称:" + food.getName()); System.out.println("商品的价格:" + food.getPrice()); System.out.println("商品的描述:" + food.getDesc()); System.out.println("------------------------"); } } public void start(){ Scanner sc = new Scanner(System.in); String commend = new String(); do { System.out.println("1.add"); System.out.println("2.showall"); System.out.println("0.exit"); System.out.println("请输入选项"); commend = sc.next(); switch(commend) { case "1": add(); break; case "2": show(); break; case "0": break; default: System.out.println("没有该选项,重新选择"); } }while(!commend.equals("0")); } }
package testpage_2024_4_10; public class Food { private String name; private String price; private String desc; public Food(String name, String price, String desc) { this.name = name; this.price = price; this.desc = desc; } public Food() { } public String getName() { return name; } public void setName(String name) { this.name = name; } public String getPrice() { return price; } public void setPrice(String price) { this.price = price; } public String getDesc() { return desc; } public void setDesc(String desc) { this.desc = desc; } }
10.ATM项目实践
package page_ATM; import java.util.ArrayList; import java.util.Random; import java.util.Scanner; public class ATM { private ArrayList<Account> accounts = new ArrayList<Account>(); Scanner sc = new Scanner(System.in); Random r = new Random(); public void start(){ String commend = "0"; do { System.out.println("欢迎进入ATM系统"); menu(); System.out.println("请输入您要选择的选项"); commend = sc.next(); switch(commend) { case "1": System.out.println("用户登录"); System.out.println(); login(); break; case "2": System.out.println("用户开户"); System.out.println(); addAccount(); break; case "0": System.out.println("ATM退出成功!"); System.out.println(); break; default: System.out.println("没有该选项,重新选择"); System.out.println(); break; } }while(!commend.equals("0")); } private void login() { if(accounts.size() == 0) { System.out.println("当前ATM中无任何账号,请先去开户"); return; } Account acc = new Account(); while(true) { System.out.println("请您输入卡号"); String st = sc.next(); //检查是否有该卡号 acc = CheckID(st); if(acc!=null) { System.out.println("当前ATM系统中存在该账号,请继续输入密码"); break; } else { System.out.println("当前ATM系统中不存在该账号,请重新输入"); } } while(true) { String password = sc.next(); if(password.equals(acc.getPassword())) { System.out.println("密码输入正确," + acc.getName() + "您已成功登录系统中"); UserMenu(acc); return; } else { System.out.println("密码输入错误,请重新输入密码"); } } } private void UserMenu(Account acc) { while(true) { System.out.println(acc.getName() + "您可以选择如下选项对该账号进行操作:"); Menu(); int commend = sc.nextInt(); switch(commend) { case 1: //查询账号 CheckThisID(acc); break; case 2: //存款 addmoney(acc); break; case 3: //取款 drawmoney(acc); break; case 4: //转账 transfermoney(acc); break; case 5: //修改密码 break; case 6: //退出 return; case 7: //注销账户 break; default: //其他情况 System.out.println("您输入的命令不合法,请重新输入"); break; } } } private void transfermoney(Account acc) { //首先得判断系统中的账号是否大于等于2 if(accounts.size() < 2) { System.out.println("当前系统中仅一个账号,请先去开户~~"); return; } //在判断一下自己账号是否有钱 if(acc.getMoney()==0) { System.out.println("您的账号余额不足,请先存钱"); return; } //到这里,再开始接收用户的卡号 while(true) { System.out.println("请输入您要转账的卡号"); String id = sc.next(); Account acc2 = CheckID(id); if(acc2 == null) { System.out.println("抱歉,在系统中没有找到该账号"); } else { while(true) { System.out.println("为了安全考量,请输入转账人的姓氏"); String name = "*" + acc2.getName().substring(1); System.out.println("提示:[" + name + "]"); String surname = sc.next(); if(acc2.getName().startsWith(surname)) { System.out.println("认证成功"); //下面开始真正转钱了 while(true) { System.out.println("请输入您要转钱的金额"); double money = sc.nextDouble(); if(money>acc.getMoney()) { System.out.println("您的金额不足,您当前可转的最大金额是" + acc.getMoney() + "请您重新输入"); } else { System.out.println("转钱中,请稍等"); acc.setMoney(acc.getMoney() - money); acc2.setMoney(acc2.getMoney() + money); System.out.println("您的账号余额为" + acc.getMoney() + "对方的余额为" + acc2.getMoney()); System.out.println("转钱成功,跳转到个人账户菜单"); return; } } } else { System.out.println("您的转账姓氏认证有问题,请重新输入"); } } } } } private void drawmoney(Account acc) { if(acc.getMoney()<100) { System.out.println("当前您的账号金额为" + acc.getMoney() + "满100元之后方可取款"); } System.out.println("请输入您要取钱的金额"); double money = sc.nextDouble(); if(money>acc.getMoney()) { System.out.println("当前账号余额不足,请重新输入金额"); } else { if(money>acc.getLimit()) { System.out.println("超过当前账号的单次取款限额,请重新输入金额"); } acc.setMoney(acc.getMoney() - money); System.out.println(acc.getName() + "您当前账号的余额为" + acc.getMoney()); } } private void addmoney(Account acc) { System.out.println("请输入您要存入多少钱"); double money = sc.nextDouble(); acc.setMoney(acc.getMoney()+money); System.out.println(acc.getName() + "您的存钱成功,存入后的金额是" + acc.getMoney()); } private void CheckThisID(Account acc) { System.out.println(acc.getName() + "下面是您该账号下的所有信息:"); System.out.println("账号ID:" + acc.getID()); System.out.println("姓名" + acc.getName()); System.out.println("性别" + acc.getSex()); System.out.println("限额" + acc.getLimit()); System.out.println("存款" + acc.getMoney()); } private void Menu() { 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("请选择:"); } private void menu() { System.out.println("---------------"); System.out.println("1.用户登录"); System.out.println("2.用户开户"); System.out.println("0.退出ATM系统"); System.out.println("---------------"); } private void addAccount() { Account acc = new Account(); System.out.println("请输入您的姓名"); String name = sc.next(); acc.setName(name); while(true) { System.out.println("请输入您的性别"); String sex = sc.next(); if(sex.equals("男") || sex.equals("女")) { acc.setSex(sex); break; } else { System.out.println("您输入的性别有误,请输入男/女"); } } while(true) { System.out.println("请输入您的密码"); String password = sc.next(); System.out.println("请再次输入您的密码作确认"); String okpassword = sc.next(); if(password.equals(okpassword)) { acc.setPassword(password); break; } else { System.out.println("您输入的两次密码不一致,请重新输入"); } } while(true) { System.out.println("请输入您每次的取现额度"); double limit = sc.nextDouble(); if(limit > 0) { acc.setLimit(limit); break; } else{ System.out.println("您输入的limit限制<=0,请重新输入"); } } //系统自动生成卡号 String id = CreatID(8); acc.setID(id); //最后把acc这一个账号扔到集合中进行管理 System.out.println(acc.getName() + "开户成功,您的卡号是" + id); accounts.add(acc); } private String CreatID(int n) { while(true) { String id = ""; for (int i = 0; i < n; i++) { id += r.nextInt(10); } Account acc = CheckID(id); if(acc == null) { return id; } } } private Account CheckID(String id) { for (int i = 0; i < accounts.size(); i++) { if(id.equals(accounts.get(i).getID())) { return accounts.get(i); } } return null; } }
package page_ATM; public class Test { public static void main(String[] args) { //首先完成ATM类的变量和start功能设计 ATM atm = new ATM(); atm.start(); } }
package page_ATM; public class Account { private String ID; private String name; private String sex; private String password; private double money; private double limit; public Account() { } public Account(String ID, String name, String sex, String password, double money, double limit) { this.ID = ID; this.name = name; this.sex = sex; this.password = password; this.money = money; this.limit = limit; } public String getID() { return ID; } public void setID(String ID) { this.ID = ID; } public String getName() { return name + (sex.equals("男") ? "先生" : "女士"); } public void setName(String name) { this.name = name; } public String getSex() { return sex; } public void setSex(String sex) { this.sex = sex; } public String getPassword() { return password; } public void setPassword(String password) { this.password = password; } public double getMoney() { return money; } public void setMoney(double money) { this.money = money; } public double getLimit() { return limit; } public void setLimit(double limit) { this.limit = limit; } }
EOF