几个有用的java小程序(已测).doc

上传人:scccc 文档编号:12711553 上传时间:2021-12-05 格式:DOC 页数:12 大小:37KB
返回 下载 相关 举报
几个有用的java小程序(已测).doc_第1页
第1页 / 共12页
几个有用的java小程序(已测).doc_第2页
第2页 / 共12页
几个有用的java小程序(已测).doc_第3页
第3页 / 共12页
几个有用的java小程序(已测).doc_第4页
第4页 / 共12页
几个有用的java小程序(已测).doc_第5页
第5页 / 共12页
点击查看更多>>
资源描述

《几个有用的java小程序(已测).doc》由会员分享,可在线阅读,更多相关《几个有用的java小程序(已测).doc(12页珍藏版)》请在三一文库上搜索。

1、/自动生成麻将牌 无算法版package MaJiangPai;import java.util.ArrayList;import java.util.Arrays;import java.util.HashMap;import java.util.Iterator;import java.util.List;import java.util.Map;import java.util.Random;import java.util.Set;import java.util.regex.Pattern;/* * 麻将 * author * */public class Majiangtest s

2、tatic final String str = new String144;/将麻将定义为一个长度为144的字符串数组static final int PLAYER = 4;/4个玩家static final int CARDS = 13;/每玩家13张牌static final String NUMBER = "一", "二", "三", "四", "五", "六", "七", "八", "九" ; /万,筒,条

3、 公共常量static final String WIND = "东风", "南风", "西风", "北风", "中风", "发财", "白皮" ;static final String WANGPAI = "春", "夏", "秋", "冬", "梅", "兰", "竹", "菊" ;public

4、 static void main(String args) Majiangtest majiang = new Majiangtest();System.out.println("正在初始化麻将.");推荐精选/初使化麻将majiang.init();System.out.println("麻将初始化完成.");System.out.println("正在洗牌.");/将麻将牌打乱顺序(洗牌)majiang.rand(str);System.out.println("洗牌完成.");System.out.prin

5、tln("开始发牌.") ;/牌洗好准备发牌Map<Integer, String> map = majiang.fapai(str);Set<Integer> set = map.keySet(); / key装到set中Iterator<Integer> it = set.iterator(); / 返回set的迭代器 装的key值while (it.hasNext() Integer key = (Integer) it.next();String value = map.get(key);System.out.println(&q

6、uot;玩家 "+key+" 开始排序.") ;/牌排序List<String> list = majiang.zhengli(value) ;System.out.print("玩家 "+key+" 排序完成: ") ; for(int i = 1; i < list.size(); i +) System.out.print(list.get(i) + " ") ;System.out.println("n");/* * 第一步:初使化麻将 */public vo

7、id init() / 用n表示数组 str 的下标int n = 0; / 表示一样的牌有四张(筒,萬,条,东,南,西,北,中,发,白)for (int k = 0; k < 4; k+) /* 筒,萬,条 */推荐精选for (int i = 1; i < 4; i+) / 1 - 代表万, 2 - 代表条 , 3 - 代表筒for (int j = 1; j < 10; j+) / 1- 代表 一,2- 代表二. / 將數組str復值,(11 代表 一万,12代表一筒13代表 一条.)strn = "" + i + "" + j

8、+ ""/ 改变数组的下标n+; /* ,东,南,西,北,中,发,白 */for (int m = 0; m < 7; m+) strn = WINDm;n+;/* 春,夏,秋,冬,梅,兰,竹,菊 */for (int i = 0; i < 8; i+) /春,夏,秋,冬,梅,兰,竹,菊各只有一张牌strn = WANGPAIi;n+;/* * * 第二步:洗牌 * param ma初使化好了的麻将牌 * return */public String rand(String ma) / 用Random类的nextInt()方法打乱数组str中各元素的顺序以达到洗

9、牌的目的Random rand = new Random();String temp = ""int n;for (int i = 0; i < str.length; i+) n = rand.nextInt(144);temp = mai;推荐精选mai = man;man = temp;return ma;/* * 第三步:发牌 * 用Map来保存玩家与玩家把对应的牌 * param str:打乱了顺序的144张牌 * return */public Map<Integer, String> fapai(String str) /定map集合,将玩家

10、与玩家的牌以键对值的关系保存在Map集合中Map<Integer, String> map = new HashMap<Integer, String>(); /定义list集合,将144张洗好的牌放入list集合中List<String> list1 = new ArrayList<String>();for (int j = 0; j < str.length; j+) / 将牌放入list集合中list1.add(strj);for (int i = 1; i <= PLAYER; i+) /有四个玩家/定义s数组,保存玩家的麻

11、将String s = new String14 ;/用n改变数组s下标int n = 0 ;for (int j = 0; j < CARDS + 1; j+) /一个玩家给十三张牌sn = list1.get(j) ;n+ ;/删去以发过的牌list1.remove(list1.get(j);map.put(i, s);return map;推荐精选/* * 第四步:对玩家的牌进行整理,即实现:牌按万条筒风牌排序,输出时要把11显示为一万 * param str1:每位玩家的牌 * return */public List<String> zhengli(String s

12、tr1) List<String> list = new ArrayList<String>();/将数组进行排序即按(万、条、筒、其它进行排序)for (int i = 0; i < str1.length; i+) /用正则判断牌是否以数字构成if (Ppile("d*").matcher(str1i).matches() Arrays.sort(str1) ;if (Integer.parseInt(str1i) >= 11&& Integer.parseInt(str1i) <= 19) /万int inde

13、x = Integer.parseInt(String) str1i.subSequence(1, 2);String s = NUMBERindex - 1 + "万"list.add(s);if (Integer.parseInt(str1i) >= 21&& Integer.parseInt(str1i) <= 29) /条int index = Integer.parseInt(String) str1i.subSequence(1, 2);String s = NUMBERindex - 1 + "条"list.ad

14、d(s);if (Integer.parseInt(str1i) >= 31&& Integer.parseInt(str1i) <= 39) /筒推荐精选int index = Integer.parseInt(String) str1i.subSequence(1, 2);String s = NUMBERindex - 1 + "筒"list.add(s); else /其它牌list.add(str1i);return list;/下班倒计时工具第一步:方法类package TimeCounter;import java.awt.Flow

15、Layout;import java.awt.event.*;import java.text.SimpleDateFormat;import java.util.Calendar;import javax.swing.JFrame;import javax.swing.JLabel;import javax.swing.JButton;import javax.swing.JTextField;import javax.swing.JOptionPane;推荐精选public class TimeCount extends JFrame implements ActionListener,

16、Runnable /* * */private static final long serialVersionUID = 1L;private JButton start;private JTextField in;private JLabel lbNow, lbNowTitle, lbLeftSecTitle, lbLeftSec, lbLeftMinTitle, lbLeftMin, lbMin;private Thread clocker,time;long startTime,endTime;long nowTime,leftTime,leftSec,leftMin;boolean f

17、lag=false;public TimeCount()this.setLayout(new FlowLayout();this.setResizable(false);this.setSize(200,170);this.setVisible(true);this.setDefaultCloseOperation(EXIT_ON_CLOSE);this.setLocation(830,580);initUI();clocker =new Thread(this,"clock");clocker.start();time=new Thread(this,"ti&q

18、uot;);time.start();public void initUI()lbNowTitle=new JLabel("现在的时间是:");lbNow = new JLabel();lbLeftSecTitle = new JLabel("距离下班还有:");lbLeftSec=new JLabel("未设置");推荐精选lbLeftMinTitle = new JLabel("距离下班还有:");lbLeftMin = new JLabel("未设置");lbMin = new JLabe

19、l("下班倒计时");in = new JTextField(5);start = new JButton("开始");start.addActionListener(this);this.add(lbNowTitle);this.add(lbNow);this.add(lbLeftSecTitle);this.add(lbLeftSec);this.add(lbLeftMinTitle);this.add(lbLeftMin);this.add(lbMin);this.add(in);this.add(start);Overridepublic voi

20、d actionPerformed(ActionEvent e) if(e.getSource()=start)Calendar startCalendar = Calendar.getInstance();startTime = startCalendar.getTime().getTime();endTime = startTime + Long.parseLong(in.getText()*1000;flag=true;Overridepublic void run() 推荐精选SimpleDateFormat dateFormat = new SimpleDateFormat(&quo

21、t;hh:mm:ss");Calendar now;while(Thread.currentThread().getName().equals("clock")now = Calendar.getInstance();nowTime = now.getTime().getTime();lbNow.setText(dateFormat.format(now.getTime();while(Thread.currentThread().getName().equals("ti")while(flag)leftTime = endTime - now

22、Time;leftSec = leftTime/1000;leftMin = leftTime/(60*1000);lbLeftSec.setText(leftSec+"秒");lbLeftMin.setText(leftMin+"分");if(leftSec = 0)flag = false;JOptionPane.showMessageDialog(this, "下班喽","注意",JOptionPane.OK_OPTION);break;try Thread.sleep(1000); catch (InterruptedException e) e.printStackTrace();推荐精选/主函数package TimeCounter;public class RunMain /* * param args */public static void main(String args) / TODO Auto-generated method stubnew TimeCount(); (注:可编辑下载,若有不当之处,请指正,谢谢!) 推荐精选

展开阅读全文
相关资源
猜你喜欢
相关搜索

当前位置:首页 > 社会民生


经营许可证编号:宁ICP备18001539号-1