斗地主案例的代码实现与异常概念&异常体系
斗地主案例的代码实现
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中去查。