【JAVA】JAVA入门(长期维护)(2)

简介: 【JAVA】JAVA入门(长期维护)(2)

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

相关文章
|
1天前
|
存储 监控 Java
【Java并发】【线程池】带你从0-1入门线程池
欢迎来到我的技术博客!我是一名热爱编程的开发者,梦想是编写高端CRUD应用。2025年我正在沉淀中,博客更新速度加快,期待与你一起成长。 线程池是一种复用线程资源的机制,通过预先创建一定数量的线程并管理其生命周期,避免频繁创建/销毁线程带来的性能开销。它解决了线程创建成本高、资源耗尽风险、响应速度慢和任务执行缺乏管理等问题。
87 60
【Java并发】【线程池】带你从0-1入门线程池
|
4月前
|
存储 安全 Java
从入门到精通:Java Map全攻略,一篇文章就够了!
【10月更文挑战第17天】本文详细介绍了Java编程中Map的使用,涵盖Map的基本概念、创建、访问与修改、遍历方法、常用实现类(如HashMap、TreeMap、LinkedHashMap)及其特点,以及Map在多线程环境下的并发处理和性能优化技巧,适合初学者和进阶者学习。
152 3
|
1月前
|
自然语言处理 Java
Java中的字符集编码入门-增补字符(转载)
本文探讨Java对Unicode的支持及其发展历程。文章详细解析了Unicode字符集的结构,包括基本多语言面(BMP)和增补字符的表示方法,以及UTF-16编码中surrogate pair的使用。同时介绍了代码点和代码单元的概念,并解释了UTF-8的编码规则及其兼容性。
113 60
|
2月前
|
Java 开发者 微服务
Spring Boot 入门:简化 Java Web 开发的强大工具
Spring Boot 是一个开源的 Java 基础框架,用于创建独立、生产级别的基于Spring框架的应用程序。它旨在简化Spring应用的初始搭建以及开发过程。
111 7
Spring Boot 入门:简化 Java Web 开发的强大工具
|
2月前
|
监控 架构师 Java
Java虚拟机调优的艺术:从入门到精通####
本文作为一篇深入浅出的技术指南,旨在为Java开发者揭示JVM调优的神秘面纱,通过剖析其背后的原理、分享实战经验与最佳实践,引领读者踏上从调优新手到高手的进阶之路。不同于传统的摘要概述,本文将以一场虚拟的对话形式,模拟一位经验丰富的架构师向初学者传授JVM调优的心法,激发学习兴趣,同时概括性地介绍文章将探讨的核心议题——性能监控、垃圾回收优化、内存管理及常见问题解决策略。 ####
|
3月前
|
监控 安全 Java
Java中的多线程编程:从入门到实践####
本文将深入浅出地探讨Java多线程编程的核心概念、应用场景及实践技巧。不同于传统的摘要形式,本文将以一个简短的代码示例作为开篇,直接展示多线程的魅力,随后再详细解析其背后的原理与实现方式,旨在帮助读者快速理解并掌握Java多线程编程的基本技能。 ```java // 简单的多线程示例:创建两个线程,分别打印不同的消息 public class SimpleMultithreading { public static void main(String[] args) { Thread thread1 = new Thread(() -> System.out.prin
|
3月前
|
Java 大数据 API
14天Java基础学习——第1天:Java入门和环境搭建
本文介绍了Java的基础知识,包括Java的简介、历史和应用领域。详细讲解了如何安装JDK并配置环境变量,以及如何使用IntelliJ IDEA创建和运行Java项目。通过示例代码“HelloWorld.java”,展示了从编写到运行的全过程。适合初学者快速入门Java编程。
|
3月前
|
存储 安全 Java
🌟Java零基础-反序列化:从入门到精通
【10月更文挑战第21天】本文收录于「滚雪球学Java」专栏,专业攻坚指数级提升,希望能够助你一臂之力,帮你早日登顶实现财富自由🚀;同时,欢迎大家关注&&收藏&&订阅!持续更新中,up!up!up!!
127 5
|
3月前
|
安全 Java 调度
Java中的多线程编程入门
【10月更文挑战第29天】在Java的世界中,多线程就像是一场精心编排的交响乐。每个线程都是乐团中的一个乐手,他们各自演奏着自己的部分,却又和谐地共同完成整场演出。本文将带你走进Java多线程的世界,让你从零基础到能够编写基本的多线程程序。
49 1
|
4月前
|
开发框架 IDE Java
java制作游戏,如何使用libgdx,入门级别教学
本文是一篇入门级教程,介绍了如何使用libgdx游戏开发框架创建一个简单的游戏项目,包括访问libgdx官网、设置项目、下载项目生成工具,并在IDE中运行生成的项目。
132 1
java制作游戏,如何使用libgdx,入门级别教学

热门文章

最新文章