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

Java入门第三季

难度入门
时长 5小时 0分
学习人数
综合评分9.50
1125人评价 查看评价
9.7 内容实用
9.4 简洁易懂
9.4 逻辑清晰
  • 在编辑器中完成了基本类型和包装类之间的转换,即装箱和拆箱的操作。

    请参考注释将 8、11、19、22 代码补充完整

    public class HelloWorld {
        public static void main(String[] args) {
            
            // 定义double类型变量
            double a = 91.5;
            
             // 手动装箱
            Double b = new Double(a);        
            
            // 自动装箱
            Double c = a;      

            System.out.println("装箱后的结果为:" + b + "和" + c);
            
            // 定义一个Double包装类对象,值为8
            Double d = new Double(87.0);
            
            // 手动拆箱
            double e = d.doubleValue();
            
            // 自动拆箱
            double f = d;
            
             System.out.println("拆箱后的结果为:" + e + "和" + f);
        }
    }

    查看全部
  • 带有泛型 的List类型属性

    List<类型> 属性名

    查看全部
  • 使用迭代器遍历

    Iterator()

    while(it。next){

    }

    查看全部
  • 数据存入集合时默认为Object类型,取出时需要强制转换。

    查看全部
  • 集合框架概述

    http://img1.sycdn.imooc.com//5dd7eb770001e07409900558.jpg

    查看全部
  • Math.random() * x 产生x以内的随机数

    round( )四舍五入

    floor  返回小于参数的最大整数

    ceil   返回大于参数的最小整数

    查看全部
  • java.util.Calendar;

    创建Calendar对象

    Calendar c = Calendar.getInstance();

    调用年 c.get(Calendar.YEAR);

    月                                 MONTH

    日                                DAY_OF_MONTH

    时                                 HOUR_OF_DAY

    分                                   MINUTE

    秒                                 SECOND

    将Calendar对象转换为Date类

    Date d = c.getTime();

    SimpleDateFormat sdf = new SimpleDateFormat(文本格式);

    查看全部
  • 两个包

    java.util.Date;

    java.text.SimpleDateFormat;

    日期转换为指定格式的文本

    Date date = new Date();

    SimpleDateFormat sdf = new SimpleDateFormat(文本格式yyyy年mm月dd日HH时mm分ss秒);

    String today = str.format(date);

    文本转换为日期

    String day = “文本格式”;

    SimpleDateFormat sdf = new SimpleDateFormat(和上面文本格式相同  yyyy年mm月dd日 HH:mm:ss)

    Date date = sdf.parse(day);

    查看全部
  • 将基本类型转换为字符串

    String str = Double。toString(a);

                    = String.valueOf(a);

                    = a + " ";

    将字符串转为基本类型

    类型 a = 类型的包装类.valueOf(字符串名);

                                       .parse类型(字符串名);

    查看全部
  • 基本类型和包装的转换

    (正)装箱和拆箱(反)

    类型 x = new 类型();

    类型 x =  ;


    类型 x = y.类型Value();

    查看全部
  • 基本类型转换

    县创建一个变量,然后创建integer包装类对象,然后将之转换为其他类型。

    int a =   ;

    integer a = new integer(a);

    转换的类型 c = b.转换的类型Value();

    查看全部
  • 编程思路和逻辑方式,这节课很有用,收藏!

    查看全部
  • 1. 字符串 str 中字符的索引从0开始,范围为 0 到 str.length()-1

    2. 使用 indexOf 进行字符或字符串查找时,如果匹配返回位置索引;如果没有匹配结果,返回 -1

    3. 使用 substring(beginIndex , endIndex) 进行字符串截取时,包括 beginIndex 位置的字符,不包括 endIndex 位置的字符

    针对如此繁杂的方法,推荐大家一个学习技巧:好记性不如烂笔头!多看的同时一定要多敲哦~~

    查看全部
  • 用new关键字创建String对象,总会是有不同的引用;而通过声明String对象再将String常量的引用赋值给该对象时,当多次出现相同的String常量时则只会创建一个对象,即对象的引用相同。

    查看全部
  • //扑克牌类

    public class Poker{

        //创建扑克牌的成员变量

    public String num;//扑克牌数字

    public String shape;//扑克牌花色

    public Poker(String shape,String num) {

    this.shape=shape;

    this.num=num;

    }

    public Poker() {

    }

    @Override

    public int hashCode() {

    final int prime = 31;

    int result = 1;

    result = prime * result + ((num == null) ? 0 : num.hashCode());

    result = prime * result + ((shape == null) ? 0 : shape.hashCode());

    return result;

    }

    @Override

    public boolean equals(Object obj) {

    if (this == obj)

    return true;

    if (obj == null)

    return false;

    if (!(obj instanceof Poker))

    return false;

    Poker other = (Poker) obj;

    if (num == null) {

    if (other.num != null)

    return false;

    } else if (!num.equals(other.num) & !shape.equals(other.shape))

          //由于是数字和花色组合后的比较,故比较重复时,比较条件中应同时满足是否相等

    return false;

    if (shape == null) {

    if (other.shape != null)

    return false;

    } else if (!num.equals(other.num) & !shape.equals(other.shape))

    return false;

    return true;

    }

    @Override

    public String toString() {

    return shape+num;

    }

    }

    import java.util.ArrayList;

    import java.util.HashSet;

    import java.util.List;

    import java.util.Set;


    //玩家类

    public class Player {

    public Integer id;//设置id类型,如输入的是字符,则报错并输出"请重新输入整数型id"

        public String name;//设置玩家姓名

        public List<Poker> poker;//玩家要拿牌,故需要有扑克牌属性

        public Player(Integer id,String name) {

        this.id=id;

        this.name=name;

        this.poker=new ArrayList<Poker>();//对Set接口的实例化,即实现类HashSet

        }

        public Player() {

       

        }

    @Override

    public String toString() {

    return name;

    }

        

    }

    package com.imooc3_7;


    import java.util.Comparator;

    //compara类

    public class comparetorPoker implements Comparator<Poker> {


    @Override

    public int compare(Poker o1, Poker o2) {

    // TODO Auto-generated method stub

    String pokerNumber = "2,3,4,5,6,7,8,9,10,J,Q,K,A";

    // String pokerShape = "黑桃,红桃,梅花,方块";

    String pokerShape = "方块,梅花,红桃,黑桃";


    int result;

    result = pokerNumber.indexOf(o1.num)-pokerNumber.indexOf(o2.num);

             //利用String类处理字符串的方法,根据o1.num得到扑克牌数字,然后用indexOf()方法找出该数字的位置下标

            if(result <0) {

            return -1;

        }else if(result >0) {

        return 1;

        }else {

        int result2;

        result2 = pokerShape.indexOf(o1.shape)-pokerShape.indexOf(o2.shape);

        if(result <0) {

            return -1;

        }else if(result >0) {

        return 1;

        }


        }

    return 0;



    }


    }

    //开始游戏类

    import java.util.ArrayList;

    import java.util.Arrays;

    import java.util.Collections;

    import java.util.InputMismatchException;

    import java.util.List;

    import java.util.Random;

    import java.util.Scanner;


    //步骤一:创建扑克牌

     

    public class PokerList {

    public List<Poker> pokerToSelect;//用来存装扑克牌

    public List<Poker> playerAList;//用来存储玩家1手上的牌的集合

    public List<Poker> playerBList;//用来存储玩家2手上的牌的集

    //由于有自定义泛型,故需要在自定义类中进行重写

    public List<String> playerName;//存储玩家的序列

    public Scanner scanner;

    String[] scores1 = {"方块","梅花","红桃","黑桃"};

    String[] scores2 = {"2","3","4","5","6","7","8","9","10","J","Q","K","A"};

    String[] scores = new String[scores1.length*scores2.length];//设置空数组,数组需指明长度,保存顺序的扑克牌       

    public PokerList() {

    pokerToSelect = new ArrayList<Poker>();//初始化接口

    playerAList = new ArrayList<Poker>();

    playerBList = new ArrayList<Poker>();

    scanner =new Scanner(System.in);

    playerName = new ArrayList<String>();

    }

    public void pokeradd() {

    System.out.println("---------------创建扑克牌---------------");

         System.out.println("---------------扑克牌创建成功!---------------");

    int index = 0;

    for(int i = 0;i<scores1.length;i++) {

    for(int j = 0;j<scores2.length;j++) {

    scores[index++]=scores1[i]+scores2[j];//创建新数组的元素

    pokerToSelect.add(new Poker(scores1[i],scores2[j]));//将扑克牌存入List序列中

    }

    }

         System.out.println("为:"+Arrays.toString(scores));//按顺序打印输出扑克牌

         //使用toString()方法可以将一个数组转换为字符串,且按顺序将多个数组元素连在一起,且用逗号和空格隔开

    }

    //步骤二:洗牌、创建玩家对象并发牌

    public void playerToPoker() {

    System.out.println("---------------开始洗牌---------------");

    Collections.shuffle(pokerToSelect);//打乱顺序

    System.out.println("---------------洗牌结束!---------------");

    System.out.println("---------------创建玩家---------------");

            int i =0;

    while(i<2) {

    System.out.println("请输入第"+(i+1)+"位玩家的ID和姓名:");

    System.out.println("请输入ID");

    int ID = 0;

    String name =null;

    try {

    ID = scanner.nextInt();//要求输入的ID是int的整数型

    System.out.println("请输入姓名");

    name =scanner.next();      

    i++;

    }

    catch(InputMismatchException e) {//1.输入类型错误时捕捉

    String token =scanner.next();//2.把Scanner里不要的内容推掉,这样Scaner才进一步读取后面的内容

    System.out.println("请重新输入");

    continue;//跳过重新循环,否则系统会加错误的id也保持在玩家对象中

    }

                playerName.add(name);//将玩家姓名保存在playerName的List序列中            

    }

        for (String playername : playerName) {//遍历玩家的序列    

    System.out.println("----欢迎玩家:"+playername);//此时需显示姓名    

    }

    System.out.println("---------------开始发牌---------------");

    List<Poker> playerToPoker = new ArrayList<Poker>();//创建一个新的List有序序列,存储玩家手里能拿到的牌

        Random random = new Random();

        Integer number;//整数型的随机数

        for(int i1 = 0;i1<4;i1++) {//循环扑克牌的序列,用随机的下标位置得到玩家手里的4张牌

        do {

        number = random.nextInt(pokerToSelect.size());//生成随机数得到有序的List扑克牌序列的下标

        }while(playerToPoker.contains(pokerToSelect.get(number)));

        //用contains方法判断玩家手里的牌是否重复

        playerToPoker.add(pokerToSelect.get(number));//若不重复,加入到玩家牌序列中

        if(i1 == 0 || i1 == 2) {//4张牌的分配方法是玩家分别抽出playerToPoker中的牌

        playerAList.add(pokerToSelect.get(number));//将第一张和第三张都给玩家A的牌序列中

        }else {

        playerBList.add(pokerToSelect.get(number));//将第二张和第四张都给玩家B的牌序列中

        }

       

        }

    for(int i2=0;i2<2;i2++) {//循环遍历玩家姓名序列,同时重复2次

    for (String playername : playerName) {

        System.out.println("玩家:"+playername+"-拿牌");

    }        

    }

    System.out.println("---------------发牌结束!---------------");

    System.out.println("---------------开始游戏...---------------");

    // 此时玩家手上各有两张牌

    //方法一:用comparator进行比较大小

            //通过comparatorPoker类的中comparator()方法,对玩家手中的牌进行排序(此时的排序方法是自定义的方法)

    Collections.sort(playerAList,new comparetorPoker());//对玩家A手中的牌进行排序,升序

    Collections.sort(playerBList,new comparetorPoker());//对玩家B手中的牌进行排序

    System.out.println("玩家:"+playerName.get(0)+"最大的手牌为:"+playerAList.get(1));

    System.out.println("玩家:"+playerName.get(1)+"最大的手牌为:"+playerBList.get(1));

            List<Poker> max_Poker = new ArrayList<Poker>();//保存玩家各自手上最大的牌的新序列max_Poker

            max_Poker.add(playerAList.get(1));

            max_Poker.add(playerBList.get(1));

    Collections.sort(max_Poker,new comparetorPoker());//对玩家各自手中的最大的牌进行排序

    if(max_Poker.get(1).equals(playerAList.get(1))) {//根据max_Poker中最大数是否和玩家A的牌最大数相同

    System.out.println("------玩家:"+playerName.get(0)+"获胜------------");

    }else {

    System.out.println("------玩家:"+playerName.get(1)+"获胜------------");

    }

    System.out.println("玩家各自的手牌为:");

    System.out.println(playerName.get(0)+":["+playerAList.get(0)+","+playerAList.get(1)+"]");

    System.out.println(playerName.get(1)+":["+playerBList.get(0)+","+playerBList.get(1)+"]");

    //方法二:根据自定义的排序方法getNum(Poker poker),设置牌和花色的权值进行比较大小

    // int playerA1 = this.getNum(playerAList.get(0));//初始化getNum()方法

    // int playerA2 = this.getNum(playerAList.get(1));

    // int playerB1 = this.getNum(playerBList.get(0));

    // int playerB2 = this.getNum(playerBList.get(1));

    // if((playerA1>playerA2?playerA1:playerA2)>(playerB1>playerB2?playerB1:playerB2)) {

    // System.out.println("------玩家:"+playerName.get(0)+"获胜------------");

    // }else if((playerA1>playerA2?playerA1:playerA2)<(playerB1>playerB2?playerB1:playerB2)) {

    // System.out.println("------玩家:"+playerName.get(1)+"获胜------------");

    // }

    }

    // /*

    // * 获得牌权值

    // */

    // public int getNum(Poker poker) {

    // int num;

    // if(poker.num == "A") {

    // num = 14;

    // }else if(poker.num == "J") {

    // num = 11;

    // }else if(poker.num == "Q") {

    // num = 12;

    // }else if(poker.num == "K") {

    // num = 13;

    // }else {

    // num = Integer.valueOf(poker.num);

    // }

    // /*

    // * 获取花色权值

    // */

    // int shape=0;

    // if(poker.shape == "黑桃") {

    // shape = 4;

    // }else if(poker.shape == "红桃") {

    // shape = 3;

    // }else if(poker.shape == "梅花") {

    // shape = 2;

    // }else if(poker.shape == "方块") {

    // shape = 1;

    // }

    // int result = num*10 + shape;

    // return result;

    // }

    //以上方法是为后期if中的条件比较大小使用的

    public static void main(String[] args) {

    // TODO Auto-generated method stub

    PokerList p = new PokerList();

    p.pokeradd();

            p.playerToPoker();

    }


    }


    查看全部

举报

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

微信扫码,参与3人拼团

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

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