为了账号安全,请及时绑定邮箱和手机立即绑定

Java入门第三季

难度入门
时长 5小时 0分
学习人数
综合评分9.50
1125人评价 查看评价
9.7 内容实用
9.4 简洁易懂
9.4 逻辑清晰
  • gaishu

    查看全部
  • s.charAt(i) 第i位

    查看全部
  • 那么,“==” 和 equals() 有什么区别呢?

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

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

    PS:字节是计算机存储信息的基本单位,1 个字节等于 8 位, gbk 编码中 1 个汉字字符存储需要 2 个字节,1 个英文字符存储需要 1 个字节。所以我们看到上面的程序运行结果中,每个汉字对应两个字节值,如“学”对应 “-47 -89” ,而英文字母 “J” 对应 “74” 。同时,我们还发现汉字对应的字节值为负数,原因在于每个字节是 8 位,最大值不能超过 127,而汉字转换为字节后超过 127,如果超过就会溢出,以负数的形式显示。(关于编码,我们在后面课程中会详细介绍,小小期待哦~~)


    查看全部
  • 基本类型与字符串之间的转换:

    一基本类型转字符串

    1使用toString()方法

    2使用String类的valueOf()方法

    3用一个空字符串加上基本类型

    二字符串转基本类型:

    1调用包装类的parseXxx静态方法

    2调用包装类的valueOf()方法转换为基本类型的包装类,会自动拆箱

    查看全部
  • 基本类型与包装类之间的转换

    1装箱(基本类型转换为包装类)

    例子:int i = 10;

               Integer x = new Integer(i);  手动装

                Integer y = i;    自动装

    2拆箱(包装类型转换为基本类型)

    例子:Integer j = new Integer(8);

              int m = j.intValue(); 手动拆

              int n = j;     自动拆

    查看全部
  • 包装类的应用

    1基本数据类型的转换

    实例:1double: doubleValue()类似的有byte,float,int,long

    2static int : parseInt(String s)  将字符串转化为int类型 

    3String:toSting()      转为字符串类型

    4static Integer:  valueOf(String s)   将字符串转为Integer类型

              

    查看全部
  • 交作业啦,可能写的不太好,还须改进
    /**
     * @author 刘梦昊 2019/11/18 16:20
     */
    public class Player {
        public int id;
        public String name;
        public List<Poker> pokers; ;
    
        public Player(int id, String name) {
            this.id = id;
            this.name = name;
            pokers = new ArrayList<>();
        }
    
        @Override
        public String toString() {
            return "Player{" +
                    "id=" + id +
                    ", name='" + name + '\'' +
                    '}';
        }
    }
    
    
    /**
     * @author 刘梦昊 2019/11/18 16:15
     */
    public class Poker implements Comparable<Poker>{
        public String value;
        public String color;
        // 点数权重
        public Integer valueNum;
        // 花色权重
        public Integer colorNum;
        
        public Poker(String value, String color, Integer valueNum, Integer colorNum) {
            this.value = value;
            this.color = color;
            this.valueNum = valueNum;
            this.colorNum = colorNum;
        }
    
        @Override
        public String toString() {
            return this.color + this.value;
        }
    
        @Override
        public int compareTo(Poker o) {
            if (this.value != o.value) {
                return this.valueNum.compareTo(o.valueNum);
            }else {
                return this.colorNum.compareTo(o.colorNum);
            }
        }
    }
    
    
    /**
     * @author 刘梦昊 2019/11/18 16:21
     */
    public class PokerGame {
        private Map<Integer,Player> players = new HashMap<>();
    
        public static void main(String[] args) {
            PokerGame pokerGame = new PokerGame();
            // 创建牌
            ArrayList<Poker> pokersList = pokerGame.createPokers();
            // 洗牌
            pokerGame.flushPoker(pokersList);
            // 创建玩家
            pokerGame.createPlayer();
            // 玩家拿牌
            pokerGame.getPokers(pokersList);
            // 游戏开始,比较牌的大小
            pokerGame.comparePoker();
        }
    
        public ArrayList<Poker> createPokers() {
            System.out.println("---------------创建扑克牌中---------------");
            ArrayList<Poker> list = new ArrayList<>();
            String[] valueArr = {"3","4","5","6","7","8","9","10","J","Q","K","A","2"};
            String[] colorArr = {"方块","梅花","黑桃","红桃"};
            for (int i = 0; i < valueArr.length; i++) {
                for (int j = 0; j < colorArr.length; j++) {
                    list.add(new Poker(valueArr[i],colorArr[j],(i + 3),j));
                }
            }
            System.out.println("---------------创建扑克牌成功!全部扑克牌如下---------------");
            for (Poker poker : list) {
                System.out.print(poker + ",");
            }
            System.out.println();
            return list;
        }
    
        public void flushPoker(ArrayList<Poker> list) {
            System.out.println("---------------正在洗牌中---------------");
            Collections.shuffle(list);
            System.out.println("---------------洗牌结束---------------");
            for (Poker poker : list) {
                System.out.print(poker + ",");
            }
        }
    
        public void createPlayer() {
            System.out.println("游戏开始,请创建俩个玩家");
            int playerNum = 2;
            int id;
            String name;
            Player player;
            Scanner scanner = null;
            for (int i = 1; i <= playerNum; i++) {
                System.out.println("请输入第" + i + "位玩家的ID和姓名");
                while (true){
                    try {
                        System.out.println("请输入id:");
                        scanner = new Scanner(System.in);
                        id = scanner.nextInt();
                        if (players.containsKey(id)) {
                            System.out.println("id已经存在");
                            continue;
                        }
                        break;
                    }catch (InputMismatchException e) {
                        System.out.println("输入有误,请输入一个整数");
                        continue;
                    }
                }
    
                while (true) {
                    System.out.println("请输入玩家1的昵称:");
                    name = scanner.next();
                    player = new Player(id, name);
                    if (players.containsValue(player)) {
                        System.out.println("输入的昵称已经存在了");
                    }else {
                        break;
                    }
                }
                players.put(id,player);
            }
            System.out.println("创建玩家结束,开始游戏.");
    
        }
    
        public void getPokers(ArrayList<Poker> PokersList) {
            // 拿牌的次数
            int num = 2;
            // 拿牌的下标
            int j = 0;
            for (int i = 0; i < num ; i++) {
                for (Map.Entry<Integer, Player> entry : players.entrySet()) {
                    entry.getValue().pokers.add(PokersList.get(j));
                    System.out.println("玩家" + entry.getValue().name + "拿牌");
                    j++;
                }
            }
            // 显示玩家拿的牌
            for (Map.Entry<Integer, Player> entry : players.entrySet()) {
                System.out.println("玩家" +entry.getValue().name + "拿的牌:" + entry.getValue().pokers);
            }
        }
    
        public void comparePoker() {
            // 创建一个用于存储玩家最大手牌的集合
            List<Poker> maxPokers = new ArrayList<>();
            for (Map.Entry<Integer, Player> entry : players.entrySet()) {
                List<Poker> pokerList = entry.getValue().pokers;
                // 玩家手中的牌排序后
                Collections.sort(pokerList);
                maxPokers.add(pokerList.get(pokerList.size()-1));
            }
            // 排序后最大手牌集合中的最大值在集合的最后一个
            Collections.sort(maxPokers);
            // 遍历玩家中的手牌,查看谁手中包含那个最大手牌,即为游戏获胜者
            for (Map.Entry<Integer, Player> entry : players.entrySet()) {
                boolean result = entry.getValue().pokers.contains(maxPokers.get(maxPokers.size()-1));
                if (result) {
                    System.out.println("玩家" + entry.getValue().name + "的最大手牌为:" + maxPokers.get(maxPokers.size()-1));
                    System.out.println("玩家" + entry.getValue().name + "获胜");
                }
            }
    
    
    
        }
    }



    运行结果:

    ---------------创建扑克牌中---------------

    ---------------创建扑克牌成功!全部扑克牌如下---------------

    方块3,梅花3,黑桃3,红桃3,方块4,梅花4,黑桃4,红桃4,方块5,梅花5,黑桃5,红桃5,方块6,梅花6,黑桃6,红桃6,方块7,梅花7,黑桃7,红桃7,方块8,梅花8,黑桃8,红桃8,方块9,梅花9,黑桃9,红桃9,方块10,梅花10,黑桃10,红桃10,方块J,梅花J,黑桃J,红桃J,方块Q,梅花Q,黑桃Q,红桃Q,方块K,梅花K,黑桃K,红桃K,方块A,梅花A,黑桃A,红桃A,方块2,梅花2,黑桃2,红桃2,

    ---------------正在洗牌中---------------

    ---------------洗牌结束---------------

    方块7,梅花7,方块5,红桃J,方块J,黑桃Q,黑桃5,红桃8,梅花6,方块A,梅花5,红桃4,黑桃2,梅花4,方块8,黑桃4,梅花10,黑桃J,红桃Q,方块10,梅花Q,黑桃8,方块4,梅花3,红桃7,方块9,梅花K,红桃6,红桃3,方块6,黑桃6,方块3,红桃9,梅花J,黑桃10,红桃10,红桃2,梅花A,方块Q,红桃A,黑桃A,方块K,梅花9,黑桃7,梅花8,黑桃3,红桃5,梅花2,方块2,红桃K,黑桃K,黑桃9,游戏开始,请创建俩个玩家

    请输入第1位玩家的ID和姓名

    请输入id:

    1

    请输入玩家1的昵称:

    haoge

    请输入第2位玩家的ID和姓名

    请输入id:

    2

    请输入玩家1的昵称:

    qiuge

    创建玩家结束,开始游戏.

    玩家haoge拿牌

    玩家qiuge拿牌

    玩家haoge拿牌

    玩家qiuge拿牌

    玩家haoge拿的牌:[方块7, 方块5]

    玩家qiuge拿的牌:[梅花7, 红桃J]

    玩家qiuge的最大手牌为:红桃J

    玩家qiuge获胜


    Process finished with exit code 0



    查看全部
  • List中contains方法实现原理是,遍历每个List中的元素(Course),调用这些元素(Course)的equals方法和入参的对象进行比较,如果有一个返回真则这个contains方法返回真。

    查看全部
  • <table><tbody><tr class="firstRow"><td><p>返回值</p></td><td><p>方法名</p></td><td><p>解释</p></td></tr><tr><td><p>byte</p></td><td><p>byteValue()</p></td><td><p>将该Integer转为byte类型</p></td></tr><tr><td><p>double</p></td><td><p>doubleValue()</p></td><td><p>转为double类型</p></td></tr><tr><td><p>float</p></td><td><p>floatValue()</p></td><td><p>转为float类型</p></td></tr><tr><td><p>int</p></td><td><p>intValue()</p></td><td><p>转为int类型</p></td></tr><tr><td><p>long</p></td><td><p>longValue()</p></td><td><p>转为long类型</p></td></tr><tr><td><p>static int</p></td><td><p>parseInt(String s)</p></td><td><p>将字符串转换为int类型</p></td></tr><tr><td><p>String</p></td><td><p>toString()</p></td><td><p>转为字符串类型</p></td></tr><tr><td><p>static Integer</p></td><td><p>valueOf( String s)</p></td><td><p>将字符串转换为Integer类型</p></td></tr></tbody></table><p>&nbsp;</p><table><tbody><tr class="firstRow"><td><p>基本类型</p></td><td><p>对应的包装类</p></td></tr><tr><td><p>byte</p></td><td><p>Byte</p></td></tr><tr><td><p>short</p></td><td><p>Short</p></td></tr><tr><td><p>int</p></td><td><p>Integer</p></td></tr><tr><td><p>long</p></td><td><p>Long</p></td></tr><tr><td><p>float</p></td><td><p>Float</p></td></tr><tr><td><p>double</p></td><td><p>Double</p></td></tr><tr><td><p>char</p></td><td><p>Character</p></td></tr><tr><td><p>boolean</p></td><td><p>Boolean</p></td></tr></tbody></table><p><br/></p>
    查看全部
  • java类型转换

    查看全部
    1. 泛型集合中的限定类型不能使用基本数据类型。

    2. 可以通过使用包装类限定允许存入的基本数据类型,如int→Integer、long→Long、boolean→Boolean

    查看全部
  • 捕获异常的总结

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

    2019-11-18

  • StringBuilder append()在字符串末尾添加字符串

    StringBuilder insert(int," " )在指定位置添加内容

    查看全部
  • StringBulider 对象名 = new StringBuilder(字符串);

    创建一个存储字符串的对象,可以改动。

    查看全部
  • indexOf() 第一次出现的位置

    lastIndexOf()  最后一次出现的位置

    substring(整数)  获取此位置后的字符串

    booleanequals()  比较两字符串

    toLowerCase/UpperCase 转换为大小写

    char charAt(int )  获取字符串中指定位置的字符

    查看全部

举报

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

微信扫码,参与3人拼团

意见反馈 帮助中心 APP下载
官方微信
友情提示:

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