17_实例

实例1

编程统计字符串"``ABCD123!@#$%ab`"中大写字母、小写字母、数字、其它字符的个数并打 印出来。

homework01.java

package cn.itcast.module2.demo06;

import java.util.HashMap;

public class homework01 {
    public static void main(String[] args) {
        StringBuilder str1 = new StringBuilder("ABCD123!@#$%ab");
        HashMap<String, Integer> hp1 = new HashMap<String, Integer>();
        hp1.put("大写字母个数", 0);
        hp1.put("小写字母个数", 0);
        hp1.put("数字个数", 0);
        hp1.put("其他字符个数", 0);
        for (int i = 0; i < str1.length(); i++) {
            char str2 = str1.charAt(i);
            if (Character.isUpperCase(str2)) {
                hp1.put("大写字母个数", hp1.get("大写字母个数") + 1);
            } else if (Character.isLowerCase(str2)) {
                hp1.put("小写字母个数", hp1.get("小写字母个数") + 1);
            } else if (Character.isDigit(str2)) {
                hp1.put("数字个数", hp1.get("数字个数") + 1);
            } else {
                hp1.put("其他字符个数", hp1.get("其他字符个数") + 1);
            }
        }
        System.out.println("hp1 = " + hp1);
    }
}
//执行结果

hp1 = {数字个数=3, 其他字符个数=5, 大写字母个数=4, 小写字母个数=2}

实例2

编程获取两个指定字符串中的最大相同子串。 如: s1="asdafghjka", s2="aaasdfg" 他们的最大子串为"asd"

提示: 将短的那个串进行长度依次递减的子串与较长的串比较。

homework02.java

package cn.itcast.module2.demo06;

import java.util.HashMap;

public class homework02 {
    public static void getMaxSameSubString(StringBuilder str1, StringBuilder str2) {
        StringBuilder shortstr = str1.length() > str2.length() ? str2 : str1;
        StringBuilder longstr = str1.length() > str2.length() ? str1 : str2;
        HashMap map = new HashMap();
        for (int i = 0; i <= shortstr.length(); i++) {
            for (int j = 0; j < i; j++) {
                //System.out.println("[" + shortstr.substring(j, i) + "]");
                if (!"".equals(shortstr.substring(j, i)) && String.valueOf(longstr).contains(shortstr.substring(j, i))) {
                    map.put(shortstr.substring(j, i), shortstr.substring(j, i).length());
                }
            }
        }

        int max = 0;
        for (Object len : map.values()) {
            max = Math.max(max, Integer.parseInt(String.valueOf(len)));
        }

        for (Object key : map.keySet()) {
            int keyLength = Integer.parseInt(String.valueOf(map.get(key)));
            if (max == keyLength) {
                System.out.println("最大相同子串是: " + key);
            }
        }
    }

    public static void main(String[] args) {
        StringBuilder stb1 = new StringBuilder("aaasdasdfgfghjka");
        StringBuilder stb2 = new StringBuilder("aaasdfg");
        getMaxSameSubString(stb1, stb2);
    }
}
//执行结果:
最大相同子串是: aaasd
最大相同子串是: asdfg

实例3

准备一个 HashMap 集合,统计字符串"123,456,789,123,456"中每个数字字符串出现的次数并打印出来。

如:

​ 123 出现了 2 次

​ 456 出现了 2 次

​ 789 出现了 1 次

homework03.java

package cn.itcast.module2.demo06;

import java.util.HashMap;

public class homework03 {
    public static void getCount(String str) {
        String[] split = str.split(",");
        HashMap<String, Integer> map = new HashMap<>();
        for (int i = 0; i < split.length; i++) {
            String str2 = split[i].trim();
            if (null == map.get(str2)) {
                map.put(str2, 1);
            } else {
                map.put(str2, Integer.parseInt(String.valueOf(map.get(str2))) + 1);
            }
        }
        System.out.println(map);
    }

    public static void main(String[] args) {
        getCount("123,234,234,345,345,345,456,456,456,456,");
    }
}
//执行结果:
{123=1, 234=2, 345=3, 456=4}

实例4

使用 List 集合实现简易的学生信息管理系统,要求打印字符界面提示用户选择相应的功 能,根据用户输入的选择去实现增加、删除、修改、查找以及遍历所有学生信息的功能。

其中学生的信息有:学号、姓名、年龄。 要求: 尽量将功能拆分为多个.java 文件。

Student.java

package cn.itcast.module2.demo06.homework04;

import java.util.Objects;

public class Student {
    private int id;
    private String name;
    private int age;

    public Student() {
    }

    public Student(int id, String name, int age) {
        setId(id);
        setName(name);
        setAge(age);
    }

    public int getId() {
        return id;
    }

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

    public String getName() {
        return name;
    }

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

    public int getAge() {
        return age;
    }

    public void setAge(int age) {
        this.age = age;
    }

    @Override
    public String toString() {
        return "Student{" +
                "id=" + id +
                ", name='" + name + '\'' +
                ", age=" + age +
                '}';
    }

    @Override
    public boolean equals(Object o) {
        if (this == o) return true;
        if (o == null || getClass() != o.getClass()) return false;
        Student student = (Student) o;
        return id == student.id &&
                age == student.age &&
                Objects.equals(name, student.name);
    }

    @Override
    public int hashCode() {
        return Objects.hash(id, name, age);
    }

    public static void main(String[] args) {
        Student stu1 = new Student(1, "李海涛", 12);
        Student stu2 = new Student(1, "李海涛", 12);
        System.out.println(stu1 == stu2);
        System.out.println(stu1.equals(stu2));
    }
}

StudentInfoManagementSystem.java

package cn.itcast.module2.demo06.homework04;

import java.util.LinkedList;

public class StudentInfoManagementSystem {
    private LinkedList<Student> stuInfo = new LinkedList<Student>();

    public StudentInfoManagementSystem() {
    }

    public LinkedList<Student> getStuInfo() {
        return stuInfo;
    }

    public Boolean add(Student stu) {
        return this.stuInfo.add(stu);
    }

    public Boolean del(Student stu) {
        return this.stuInfo.remove(stu);
    }

    public Student del(int index) {
        return this.stuInfo.remove(index);
    }

    public Student set(int index, Student stu) {
        return this.stuInfo.set(index, stu);
    }

    public Student get(int index) {
        return this.stuInfo.get(index);
    }

    public int intindexOf(Student stu) {
        return this.stuInfo.indexOf(stu);
    }

    public void printOneByOne() {
        for (int i = 0; i < this.stuInfo.size(); i++) {
            System.out.println(this.stuInfo.get(i));
        }
    }
}

Start.java

package cn.itcast.module2.demo06.homework04;

import java.util.HashSet;
import java.util.Scanner;

public class Start {

    public static void main(String[] args) {
        StudentInfoManagementSystem sims = new StudentInfoManagementSystem();
        while (true) {
            System.out.println("\n----------------------------------------------------------------------");
            System.out.print("菜单: 增加(A) 删除(B) 修改(C) 单独查找(D) 查看所有(E)\n请输入您的选项:");
            Scanner sc = new Scanner(System.in);
            String choise = sc.next();

            if (choise.trim().equals("增加") || choise.trim().equals("A")) {
                System.out.print("请输入学生ID: ");
                int id = sc.nextInt();
                System.out.print("请输入学生姓名: ");
                String name = sc.next();
                System.out.print("请输入学生年龄: ");
                int age = sc.nextInt();
                Student stu = new Student(id, name, age);
                Boolean addRes = sims.add(stu);
                if (!addRes) {
                    System.out.println("添加学生失败!");
                } else {
                    System.out.println("添加学生" + stu.toString() + "成功!");
                }
            } else if (choise.trim().equals("删除") || choise.trim().equals("B")) {
                System.out.print("请输入学生ID: ");
                int id = sc.nextInt();
                System.out.print("请输入学生姓名: ");
                String name = sc.next();
                System.out.print("请输入学生年龄: ");
                int age = sc.nextInt();
                Student stu = new Student(id, name, age);
                for (int i = 0; i < sims.getStuInfo().size(); i++) {
                    if (stu.equals(sims.getStuInfo().get(i))) {
                        sims.del(i);
                        System.out.println("学生" + stu.toString() + "已成功删除!");
                    }
                }
            } else if (choise.trim().equals("修改") || choise.trim().equals("C")) {
                System.out.print("请输入学生ID: ");
                int id = sc.nextInt();
                System.out.print("请输入学生姓名: ");
                String name = sc.next();
                System.out.print("请输入学生年龄: ");
                int age = sc.nextInt();
                Student stu = new Student(id, name, age);

                System.out.print("请输入修改后的学生ID: ");
                int id2 = sc.nextInt();
                System.out.print("请输入修改后的学生姓名: ");
                String name2 = sc.next();
                System.out.print("请输入修改后的学生年龄: ");
                int age2 = sc.nextInt();
                Student stu2 = new Student(id2, name2, age2);

                Boolean flag = false;
                for (int i = 0; i < sims.getStuInfo().size(); i++) {
                    if (stu.equals(sims.getStuInfo().get(i))) {
                        sims.set(i, stu2);
                        System.out.println("学生" + stu.toString() + "已修改为" + stu2.toString());
                        flag = true;
                    }
                }
                if (!flag) {
                    System.out.println("学生" + stu.toString() + "在系统中不存在!");
                }
            } else if (choise.trim().equals("单独查找") || choise.trim().equals("D")) {
                System.out.print("请输入学生ID(未知则输入-1): ");
                int id = sc.nextInt();
                System.out.print("请输入学生姓名(未知则输入.): ");
                String name = sc.next().trim();
                System.out.print("请输入学生年龄(未知则输入-1): ");
                int age = sc.nextInt();

                if (id == -1 && name.equals(".") && age == -1) {
                    System.out.println("至少有一个参数有数值!");
                    continue;
                }

                HashSet studentSet = new HashSet();

                for (int i = 0; i < sims.getStuInfo().size(); i++) {
                    Student stu = sims.getStuInfo().get(i);
                    if (stu.getId() == id) {
                        studentSet.add(stu);
                    }
                    if (stu.getName().equals(name)) {
                        studentSet.add(stu);
                    }
                    if (stu.getAge() == age) {
                        studentSet.add(stu);
                    }
                }
                System.out.println("查询结果是: " + studentSet);
            } else if (choise.trim().equals("查看所有") || choise.trim().equals("E")) {
                sims.printOneByOne();
            } else {
                System.out.println("您的输入有误,请重新输入!");
            }
        }
    }
}
//运行start.java
//运行结果是:

----------------------------------------------------------------------
菜单: 增加(A) 删除(B) 修改(C) 单独查找(D) 查看所有(E)
请输入您的选项:A
请输入学生ID: 1
请输入学生姓名: 刘备
请输入学生年龄: 40
添加学生Student{id=1, name='刘备', age=40}成功!

----------------------------------------------------------------------
菜单: 增加(A) 删除(B) 修改(C) 单独查找(D) 查看所有(E)
请输入您的选项:A
请输入学生ID: 2
请输入学生姓名: 关羽
请输入学生年龄: 38
添加学生Student{id=2, name='关羽', age=38}成功!

----------------------------------------------------------------------
菜单: 增加(A) 删除(B) 修改(C) 单独查找(D) 查看所有(E)
请输入您的选项:A
请输入学生ID: 3
请输入学生姓名: 张飞
请输入学生年龄: 35
添加学生Student{id=3, name='张飞', age=35}成功!

----------------------------------------------------------------------
菜单: 增加(A) 删除(B) 修改(C) 单独查找(D) 查看所有(E)
请输入您的选项:A
请输入学生ID: 4
请输入学生姓名: 赵云
请输入学生年龄: 27
添加学生Student{id=4, name='赵云', age=27}成功!

----------------------------------------------------------------------
菜单: 增加(A) 删除(B) 修改(C) 单独查找(D) 查看所有(E)
请输入您的选项:C
请输入学生ID: 4
请输入学生姓名: 赵云
请输入学生年龄: 27
请输入修改后的学生ID: 4
请输入修改后的学生姓名: 赵云
请输入修改后的学生年龄: 26
学生Student{id=4, name='赵云', age=27}已修改为Student{id=4, name='赵云', age=26}

----------------------------------------------------------------------
菜单: 增加(A) 删除(B) 修改(C) 单独查找(D) 查看所有(E)
请输入您的选项:E
Student{id=1, name='刘备', age=40}
Student{id=2, name='关羽', age=38}
Student{id=3, name='张飞', age=35}
Student{id=4, name='赵云', age=26}

----------------------------------------------------------------------
菜单: 增加(A) 删除(B) 修改(C) 单独查找(D) 查看所有(E)
请输入您的选项:D
请输入学生ID(未知则输入-1): 4
请输入学生姓名(未知则输入.): 。
请输入学生年龄(未知则输入-1): -1
查询结果是: [Student{id=4, name='赵云', age=26}]

----------------------------------------------------------------------
菜单: 增加(A) 删除(B) 修改(C) 单独查找(D) 查看所有(E)
请输入您的选项:B
请输入学生ID: 1
请输入学生姓名: 刘备
请输入学生年龄: 40

学生Student{id=1, name='刘备', age=40}已成功删除!

----------------------------------------------------------------------
菜单: 增加(A) 删除(B) 修改(C) 单独查找(D) 查看所有(E)
请输入您的选项:E
Student{id=2, name='关羽', age=38}
Student{id=3, name='张飞', age=35}
Student{id=4, name='赵云', age=26}

----------------------------------------------------------------------
菜单: 增加(A) 删除(B) 修改(C) 单独查找(D) 查看所有(E)
请输入您的选项:

实例5

使用集合实现斗地主游戏的部分功能,要求如下:

(1)首先准备54 张扑克牌并打乱顺序。

(2)由三个玩家交替摸牌,每人17 张扑克牌,最后三张留作底牌。

(3)查看三个玩家手中的扑克牌和底牌。

(4)其中玩家手中的扑克牌需要按照大小顺序打印,规则如下:

手中扑克牌从大到小的摆放顺序:大王,小王,2,A,K,Q,J,10,9,8,7,6,5,4,3

Card.java

package cn.itcast.module2.demo06.homework05;

import java.util.Objects;

public class Card {
    private String name;
    private String attribute;

    public Card() {
    }

    public Card(String name, String attribute) {
        setName(name);
        setAttribute(attribute);
    }

    public String getName() {
        return name;
    }

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

    public String getAttribute() {
        return attribute;
    }

    public void setAttribute(String attribute) {
        this.attribute = attribute;
    }

    @Override
    public String toString() {
        return "Card{" +
                "name='" + name + '\'' +
                ", attribute='" + attribute + '\'' +
                '}';
    }

    @Override
    public boolean equals(Object o) {
        if (this == o) return true;
        if (o == null || getClass() != o.getClass()) return false;
        Card card = (Card) o;
        return Objects.equals(name, card.name) &&
                Objects.equals(attribute, card.attribute);
    }

    @Override
    public int hashCode() {
        return Objects.hash(name, attribute);
    }
}

PokerWeight.java

package cn.itcast.module2.demo06.homework05;

import java.util.HashMap;

public class PokerWeight {
    private HashMap pokerweight = new HashMap();

    public PokerWeight() {
        setPokerWeight();
    }

    public HashMap getPokerWeight() {
        return pokerweight;
    }

    public void setPokerWeight() {
        //HashMap pokerWeight = new HashMap();
        pokerweight.put("JOKER", "100");
        pokerweight.put("joker", "99");
        pokerweight.put("2", "98");
        pokerweight.put("A", "97");
        pokerweight.put("K", "96");
        pokerweight.put("Q", "95");
        pokerweight.put("J", "94");
        pokerweight.put("10", "93");
        pokerweight.put("9", "92");
        pokerweight.put("8", "91");
        pokerweight.put("7", "90");
        pokerweight.put("6", "89");
        pokerweight.put("5", "88");
        pokerweight.put("4", "87");
        pokerweight.put("3", "86");
    }
}

Poker.java

package cn.itcast.module2.demo06.homework05;

import java.util.*;

public class Poker {
    private List<Card> orderedPoker = new LinkedList<Card>();
    private List<Card> disorderedPoker = new LinkedList<Card>();

    public Poker() {
        setOrderedPoker();
        setDisorderedPoker();
    }

    public List<Card> getOrderedPoker() {
        return orderedPoker;
    }

    public void setOrderedPoker() {
        for (int i = 1; i <= 13; i++) {
            if (i == 1) {
                this.orderedPoker.add(new Card("A", "黑桃"));
                this.orderedPoker.add(new Card("A", "红桃"));
                this.orderedPoker.add(new Card("A", "梅花"));
                this.orderedPoker.add(new Card("A", "方块"));
            } else if (i == 11) {
                this.orderedPoker.add(new Card("J", "黑桃"));
                this.orderedPoker.add(new Card("J", "红桃"));
                this.orderedPoker.add(new Card("J", "梅花"));
                this.orderedPoker.add(new Card("J", "方块"));
            } else if (i == 12) {
                this.orderedPoker.add(new Card("Q", "黑桃"));
                this.orderedPoker.add(new Card("Q", "红桃"));
                this.orderedPoker.add(new Card("Q", "梅花"));
                this.orderedPoker.add(new Card("Q", "方块"));
            } else if (i == 13) {
                this.orderedPoker.add(new Card("K", "黑桃"));
                this.orderedPoker.add(new Card("K", "红桃"));
                this.orderedPoker.add(new Card("K", "梅花"));
                this.orderedPoker.add(new Card("K", "方块"));
            } else {
                this.orderedPoker.add(new Card(String.valueOf(i), "黑桃"));
                this.orderedPoker.add(new Card(String.valueOf(i), "红桃"));
                this.orderedPoker.add(new Card(String.valueOf(i), "梅花"));
                this.orderedPoker.add(new Card(String.valueOf(i), "方块"));
            }
        }
        this.orderedPoker.add(new Card("joker", ""));
        this.orderedPoker.add(new Card("JOKER", ""));
    }

    public List<Card> getDisorderedPoker() {
        Collections.shuffle(this.disorderedPoker);
        return this.disorderedPoker;
    }

    public void setDisorderedPoker() {
        this.disorderedPoker.addAll(this.orderedPoker);
        Collections.shuffle(this.disorderedPoker);
    }

    public static void makeOrderly(List<Card> mypoker, int left, int right) {
        //如果left等于right,即数组只有一个元素,直接返回
        if (left > right) {
            return;
        }

        //设置最左边的元素为基准值
        int key = Integer.parseInt(String.valueOf(new PokerWeight().getPokerWeight().get(mypoker.get(left).getName())));
        Card key1 = mypoker.get(left);

        //数组中比key小的放在左边,比key大的放在右边,key值下标为i
        int i = left; //左指针
        int j = right;//右指针

        while (i < j) {
            //j向左移,直到遇到比key小的值
            while (Integer.parseInt(String.valueOf(new PokerWeight().getPokerWeight().get(mypoker.get(j).getName()))) >= key && i < j) {
                j--;
            }
            //i向右移,直到遇到比key大的值
            while (Integer.parseInt(String.valueOf(new PokerWeight().getPokerWeight().get(mypoker.get(i).getName()))) <= key && i < j) {
                i++;
            }
            //i和j指向的元素交换
            if (i < j) {
                Card temp2 = mypoker.get(i);
                mypoker.set(i, mypoker.get(j));
                mypoker.set(j, temp2);
            }
        }
        mypoker.set(left, mypoker.get(i));
        mypoker.set(i, key1);

        makeOrderly(mypoker, left, i - 1);
        makeOrderly(mypoker, i + 1, right);
    }

    public static void main(String[] args) {
        Poker poker = new Poker();
        List<Card> mypoker = poker.getDisorderedPoker();
        Poker.makeOrderly(mypoker, 0, mypoker.size() - 1);
        System.out.println("mypoker = " + mypoker);
    }
}

PlayCards.java

package cn.itcast.module2.demo06.homework05;

import java.util.ArrayList;
import java.util.Iterator;
import java.util.List;

public class PlayCards {

    public static void main(String[] args) {
        Person person1 = new Person("刘备");
        Person person2 = new Person("关羽");
        Person person3 = new Person("张飞");
        Poker poker = new Poker();
        List<Card> disorderedPoker = poker.getDisorderedPoker();
        List<Card> dizhuPai = new ArrayList<Card>();
        dizhuPai.add(disorderedPoker.remove(disorderedPoker.size() - 1));
        dizhuPai.add(disorderedPoker.remove(disorderedPoker.size() - 1));
        dizhuPai.add(disorderedPoker.remove(disorderedPoker.size() - 1));
        System.out.println("地主牌是:" + dizhuPai);

        Iterator<Card> iterator = disorderedPoker.iterator();
        while (iterator.hasNext()) {
            person1.setCards(iterator.next());
            person2.setCards(iterator.next());
            person3.setCards(iterator.next());
        }

        List<Card> cardsOfPerson1 = person1.getCards();
        List<Card> cardsOfPerson2 = person2.getCards();
        List<Card> cardsOfPerson3 = person3.getCards();

        Poker.makeOrderly(cardsOfPerson1, 0, cardsOfPerson1.size() - 1);
        Poker.makeOrderly(cardsOfPerson2, 0, cardsOfPerson2.size() - 1);
        Poker.makeOrderly(cardsOfPerson3, 0, cardsOfPerson3.size() - 1);

        System.out.println(person1.getName() + "的手牌是:" + cardsOfPerson1);
        System.out.println(person2.getName() + "的手牌是:" + cardsOfPerson2);
        System.out.println(person3.getName() + "的手牌是:" + cardsOfPerson3);
    }
}
//运行PlayCards.java
//运行结果是:
地主牌是:[Card{name='A', attribute='梅花'}, Card{name='J', attribute='方块'}, Card{name='2', attribute='梅花'}]
刘备的手牌是:[Card{name='3', attribute='梅花'}, Card{name='3', attribute='黑桃'}, Card{name='3', attribute='方块'}, Card{name='4', attribute='红桃'}, Card{name='5', attribute='黑桃'}, Card{name='6', attribute='黑桃'}, Card{name='7', attribute='黑桃'}, Card{name='8', attribute='黑桃'}, Card{name='8', attribute='方块'}, Card{name='9', attribute='黑桃'}, Card{name='10', attribute='红桃'}, Card{name='10', attribute='方块'}, Card{name='K', attribute='梅花'}, Card{name='A', attribute='方块'}, Card{name='2', attribute='红桃'}, Card{name='2', attribute='方块'}, Card{name='JOKER', attribute=''}]
关羽的手牌是:[Card{name='4', attribute='黑桃'}, Card{name='5', attribute='红桃'}, Card{name='6', attribute='梅花'}, Card{name='7', attribute='红桃'}, Card{name='7', attribute='方块'}, Card{name='7', attribute='梅花'}, Card{name='9', attribute='梅花'}, Card{name='10', attribute='黑桃'}, Card{name='J', attribute='梅花'}, Card{name='Q', attribute='方块'}, Card{name='Q', attribute='红桃'}, Card{name='K', attribute='方块'}, Card{name='K', attribute='红桃'}, Card{name='K', attribute='黑桃'}, Card{name='A', attribute='黑桃'}, Card{name='A', attribute='红桃'}, Card{name='joker', attribute=''}]
张飞的手牌是:[Card{name='3', attribute='红桃'}, Card{name='4', attribute='方块'}, Card{name='4', attribute='梅花'}, Card{name='5', attribute='方块'}, Card{name='5', attribute='梅花'}, Card{name='6', attribute='红桃'}, Card{name='6', attribute='方块'}, Card{name='8', attribute='梅花'}, Card{name='8', attribute='红桃'}, Card{name='9', attribute='红桃'}, Card{name='9', attribute='方块'}, Card{name='10', attribute='梅花'}, Card{name='J', attribute='黑桃'}, Card{name='J', attribute='红桃'}, Card{name='Q', attribute='黑桃'}, Card{name='Q', attribute='梅花'}, Card{name='2', attribute='黑桃'}]
posted @ 2021-05-18 20:13  咕噜噜~  阅读(65)  评论(0编辑  收藏  举报