斗地主案例的代码实现与异常概念&异常体系

斗地主案例的代码实现

package Date;

import java.util.ArrayList;
  import java.util.Collections;
  import java.util.HashMap;
  import java.util.List;

  /**
   * 实现模拟斗地主功能
   *  1. 组合牌
   * 2. 洗牌
  * 3. 发牌
  * 4. 看牌
  * @author vanguard
  *
  */
 public class DouDiZhu {
     public static void main(String[] args) {
         //1. 组合牌
         //创建Map集合,键是编号, 值是牌
         HashMap<Integer, String> pooker = new HashMap<Integer, String>();
         //创建List集合存储编号
         List<Integer> pookerNum = new ArrayList<Integer>();
         //创建花色数组
         String[] colors = {"", "", "", ""};
         //创建点数数组
         String[] numbers = {"2", "A", "K", "Q", "J", "10", "9", "8", "7", "6", "5", "4", "3"};
         //定义整型数组,作为键出现
         int index = 2;
         //遍历数组:花色+点数进行组合,存储到Map集合中
         for(String number : numbers) {
             for(String color : colors) {
                 pooker.put(index, color + number);
                 pookerNum.add(index);
                 index++;
             }
         }
         //存储大王、小王到Map集合中
         pooker.put(0, "大王");
         pookerNum.add(0);
         pooker.put(1, "小王");
         pookerNum.add(1);

         //2. 洗牌,将牌的编号打乱
         Collections.shuffle(pookerNum);

         //3. 发牌
         //定义三个玩家和底牌集合
         List<Integer> play1 = new ArrayList<Integer>();
         List<Integer> play2 = new ArrayList<Integer>();
         List<Integer> play3 = new ArrayList<Integer>();
         List<Integer> bottom = new ArrayList<Integer>();
         for(int i = 0; i < pookerNum.size(); i++) {
            //先存底牌
           if(i < 3) {
                //存底牌
                 bottom.add(pookerNum.get(i));
                 //对索引%3判断
            } else if(i % 3 == 0) {
               //发给玩家1
               play1.add(pookerNum.get(i));
           } else if(i %3 == 1) {
                play2.add(pookerNum.get(i));
           } else if(i % 3 == 2) {
                //发给玩家3
                play3.add(pookerNum.get(i));
            }
       }
        //各个玩家的牌排序
       Collections.sort(play1);
        Collections.sort(play2);
        Collections.sort(play3);

        //4. 看牌
        look("玩家1", play1, pooker);
        look("玩家2", play2, pooker);
        look("玩家3", play3, pooker);
        look("底牌", bottom, pooker);

     }

     /**
     * 看牌的方法
      * 将玩家手中的编号,到Mpa集合中查找
     * @param name   * @param play
     * @param pooker
     */
    private static void look(String name, List<Integer> play, HashMap<Integer, String> pooker) {
        //遍历ArrayList集合,获取元素,作为键到Map集合中查找
         System.out.print(name + ":");
       for(Integer key : play) {
           String value = pooker.get(key);
             System.out.print(value + " ");
         }
         System.out.println();
     }
 }

异常概念

异常,就是不正常的意思。在生活中:医生说,你的身体某个部位有异常,该部位和正常相比有点不同,该部位的功能将受影响.在程序中的意思就是︰

异常︰指的是程序在执行过程中,出现的非正常的情况,最终会导致VM的非正常停止。

在]ava等面向对象的编程语言中,异常本身是一个类,产生异常就是创建异常对象并抛出了一个异常对象。Java处理异常的方式是中断处理。

异常指的并不是语法错误,语法错了,编译不通过,不会产生字节码文件,根本不能运行.

概念:指的是程序在执行过程中,出现的非正常的情况,最终会导致JVM非正常停止。异常本身是一个类,产生异常就是创建异常对象并抛出一个异常对象。

异常体系

异常的根是Throwable,有两个子类 Error和Exception。平常所说的异常是Exception
Error异常,不能处理,只能避免
Exception异常,由于使用不当导致,可以避免。

异常机制其实是帮助我们找到程序中的问题,异常的根类是java.lang.Throwable,其下有两个子类:

java.lang .Error与java.lang .Exception,平常所说的异常指java.lang.Exception 。

 

Throwable体系:
Error:严重错误Error,无法通过处理的错误,只能事先避免,好比绝症。
Exception:表示异常,异常产生后程序员可以通过代码的方式纠正,使程序继续运行,是必须要处理的。好比感冒、阑尾炎。

Throwable中的常用方法:
public void printStackTrace():打印异常的详细信息。
包含了异常的类型异常的原因,还包括异常出现的位置,在开发和调试阶段都得使用printStackTrace。public string getMessage():获取发生异常的原因。
提示给用户的时候就提示错误原因。
public string tostring():获取异常的类型和异常描述信息(不用)。

出现异常,不要紧张把异常的简单类名,拷贝到API中去查。

 

posted @ 2022-07-07 10:16  zj勇敢飞,xx永相随  阅读(77)  评论(0编辑  收藏  举报