为了账号安全,请及时绑定邮箱和手机立即绑定
慕课网数字资源数据库体验端
Java入门第三季_学习笔记_慕课网
为了账号安全,请及时绑定邮箱和手机立即绑定

Java入门第三季

陈码农
难度入门
时长 5小时 0分
  • 异常是担心出现异常所以要抛出来

    查看全部
  • 把自定义异常 包装成已有的异常

    查看全部

  • public class MainClass {
        
        public static void main(String[] args) {
            Game game = Game.newInstance();
            game.initUser(2);
            game.dealCards(3);
            game.playCards();
        }
    }

    public class Game {
        private List<Cards> mCaraList;
        private List<User> mUserList;

        private Game() {
            if(mCaraList==null) {
                mCaraList = new ArrayList<>();
            }
            if(mUserList==null) {
                mUserList = new ArrayList<>();
            }
            initCards();
            shuffleCards();
        }

        public static Game newInstance() {
            return new Game();
        }

        private void initCards() {
            System.out.println("-----------创建扑克牌--------------");
            mCaraList.clear();
            for (String colour : Constant.ARRAY_COLOUR) {
                for (String point : Constant.ARRAY_POINT) {
                    mCaraList.add(new Cards(colour, point));
                }
            }
            System.out.println("-----------扑克牌创建成功!--------------");
        }

        private void shuffleCards() {
            System.out.println("-----------开始洗牌!--------------");
            Collections.shuffle(mCaraList);
            Collections.shuffle(mCaraList);
            System.out.println("-----------洗牌结束!--------------");
        }

        /**
         *
         * @param userCount  玩家数量
         */
        public void initUser(int userCount) {
            Scanner scannerIn = new Scanner(System.in);
            int i = 1;
            do {
                System.out.println("请输入第" + i + "位玩家的ID和姓名:");
                while (true) {
                    try {
                        System.out.println("请输入ID:");
                        Integer id = scannerIn.nextInt();

                        User user = new User(id);
                        if (mUserList.contains(user)) {
                            throw new Exception();
                        }
                        user = null;
                        System.out.println("请输入姓名:");
                        String name = scannerIn.next();
                        mUserList.add(new User(id, name));
                        break;
                    } catch (InputMismatchException e) {
                        scannerIn = new Scanner(System.in);
                        System.out.println("请输入整数类型的ID!");
                    } catch (Exception e) {
                        System.out.println("该ID已存在,请重新输入!");
                    }
                }
                i++;
            } while (i <= userCount&&userCount<=4);
            scannerIn.close();
            scannerIn = null;

            for (User user : mUserList) {
                if (user != null) {
                    System.out.println("---欢迎玩家:" + user.getName());
                }
            }
        }

        /**
         *
         * @param cardCount  每人发几张牌
         */
        public void dealCards(int cardCount) {
            System.out.println("-----------开始发牌!--------------");

            for (int i = 0; i < cardCount; i++) {
                int size = mUserList.size();
                for (User user : mUserList) {
                    if (user != null) {
                        Cards cards = mCaraList.get(0);
                        user.addCardsToList(cards);
                        mCaraList.remove(0);
                        System.out.println("---玩家" + user.getName() + "---拿牌---"+cards);
                    }
                }
            }
            System.out.println("-----------发牌结束!--------------");
        }

        
        public void playCards() {
            System.out.println("-----------游戏开始!--------------");
            int size = mUserList.size();

            Cards maxCards = null;
            User winUser = null;
            for(User user:mUserList) {
                List<Cards> list = user.getList();
                Collections.sort(list);
                Cards cards = list.get(0);
                if (maxCards == null) {
                    maxCards = cards;
                    winUser = user;
                } else {
                    int win = maxCards.compareTo(cards);
                    if (win > 0) {
                        maxCards = cards;
                        winUser = user;
                    }
                }
                System.out.println("玩家:" + winUser.getName() + "  最大的手牌为" + maxCards);
            }
            System.out.println("-----------玩家:" + winUser + "获胜!--------------");
        }
    }

    public class Cards implements Comparable<Cards> {
        private String colour;
        private String point;

        public Cards(String colour, String point) {
            super();
            this.colour = colour;
            this.point = point;
        }

        @Override
        public int compareTo(Cards card) {//用于将 Cards对象与方法的参数进行比较
            int pointPosition1 = card.getPointPosition();
            int pointPosition2 = this.getPointPosition();
            if(pointPosition1==pointPosition2) {
                int colourPosition1 = card.getColourPosition();
                int colourPosition2 = this.getColourPosition();
                return colourPosition1-colourPosition2;
            }
            return pointPosition1-pointPosition2;
        }

        private int getPointPosition() {
            String point = getPoint();
            int length = Constant.ARRAY_POINT.length;
            for (int i = 0; i < length; i++) {
                if (point.equals( Constant.ARRAY_POINT[i])) {
                    return i;
                }
            }
            return length - 1;
        }

        private int getColourPosition() {
            String colour = getColour();
            int length =  Constant.ARRAY_COLOUR.length;
            for (int i = 0; i < length; i++) {
                if (colour.equals( Constant.ARRAY_COLOUR[i])) {
                    return i;
                }
            }
            return length - 1;
        }

        public String getColour() {
            return colour == null ?  Constant.ARRAY_COLOUR[3] : colour;
        }

        public String getPoint() {
            return point == null ?  Constant.ARRAY_POINT[0] : point;
        }

        public void setColour(String colour) {
            this.colour = colour;
        }

        public void setPoint(String point) {
            this.point = point;
        }

        @Override
        public String toString() {
            return colour+point;
        }   
    }


    package com.itedu.www.entity;

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

    public class User {
        private int id;
        private String name;
        private List<Cards> list;
        public User(int id, String name) {
            super();
            this.id = id;
            this.name = name;
            this.list = new ArrayList<>();
        }
        
        public User(int id) {
            super();
            this.id = id;
        }


        @Override
        public String toString() {
            return "昵称:  " + name;
        }
        public int getId() {
            return id;
        }
        public String getName() {
            return name;
        }
        public List<Cards> getList() {
            return list;
        }
        
        public void addCardsToList(Cards c) {
            list.add(c);
        }

        public void clearList() {
            list.clear();;
        }


        @Override
        public int hashCode() {
            final int prime = 31;
            int result = 1;
            result = prime * result + id;
            return result;
        }




        @Override
        public boolean equals(Object obj) {
            if (this == obj)
                return true;
            if (obj == null)
                return false;
            if (getClass() != obj.getClass())
                return false;
            User other = (User) obj;
            if (id != other.id)
                return false;
            return true;
        }
    }

    查看全部
  • Try 调用方法 catch捕获错误  并处理错误

    查看全部
  • StringBuffer 是线程安全的,而 StringBuilder 则没有实现线程安全功能,所以性能略高。因此一般情况下,如果需要创建一个内容可变的字符串对象,应优先考虑使用 StringBuilder 类。

    查看全部
  • ==: 判断两个字符串在内存中首地址是否相同,即判断是否是同一个字符串对象

    equals(): 比较存储在两个字符串对象中的内容是否一致


    查看全部
  • 啊啊啊啊啊

    查看全部
  • 1、使用format()方法将日期转换为指定格式文本

    Date d = new Date();

    SimpleDateFormat sdf=new SimpleDateFormat("yyyy-MM-dd HH:mm:ss");

    String today=sdf.format(d);

    sysout("today");

    2、使用parse() 方法将文本转换为日期


    查看全部
  • 异常总结    处理

    查看全部
    0 采集 收起 来源:经验总结

    2018-06-24

  • PS:字节是计算机存储信息的基本单位,1 个字节等于 8 位, gbk 编码中 1 个汉字字符存储需要 2 个字节,1 个英文字符存储需要 1 个字节。

    汉字对应的字节值为负数,原因在于每个字节是 8 位,最大值不能超过 127,而汉字转换为字节后超过 127,如果超过就会溢出,以负数的形式显示。

    查看全部
  • String 对象创建后则不能被修改,是不可变的,所谓的修改其实是创建了新的对象,所指向的内存空间不同。如果需要一个可以改变的字符串,我们可以使用StringBuffer或者StringBuilder。

    多次出现的字符常量,Java编译程序只创建一个。

    查看全部
  • 字符串:String类型;String类位于java.lang包中,默认情况下,该包被自动导入所有的程序。

    String str="白露早为霜";

    String str=new String();

    String str=new String("白露早为霜");

    查看全部
  • 输入不匹配异常 InputMismatchException

                         ArthmeticException

    父类异常放到最后

    查看全部
  • 使用 Math 类操作数据

    Math 类位于 java.lang 包中,包含用于执行基本数学运算的方法, Math 类的所有方法都是静态方法,所以使用该类中的方法时,可以直接使用类名.方法名,如: Math.round();

    常用的方法:

    通过案例我们来认识一下他们的使用吧!!

    运行结果:

    PS: Math 类还提供了许多其他方法,各位小伙伴们可以注意关注 wiki ,查阅更多信息


    查看全部
  • 使用 Math 类操作数据

    Math 类位于 java.lang 包中,包含用于执行基本数学运算的方法, Math 类的所有方法都是静态方法,所以使用该类中的方法时,可以直接使用类名.方法名,如: Math.round();

    常用的方法:

    通过案例我们来认识一下他们的使用吧!!

    运行结果:

    PS: Math 类还提供了许多其他方法,各位小伙伴们可以注意关注 wiki ,查阅更多信息


    查看全部

举报

0/150
提交
取消
课程须知
此部分为 Java 课程的进阶内容,适合具有一定 Java 基础的伙伴们学习,如果您是新手,建议您移步 《Java入门第一季》 和 《Java入门第二季》,在理解并掌握面向对象相关知识后再回来进修。
老师告诉你能学到什么?
本课程将学习 Java 中的异常处理、集合框架、字符串、常用类等,逐步学习掌握 Java 高级技术。
友情提示:

您好,此课程属于迁移课程,您已购买该课程,无需重复购买,感谢您对慕课网的支持!