java了解异常_ID检测_Java入门第三季7-1简易扑克牌游戏(自定义玩家个数,玩家个数和ID异常检测)...

玩家类:

package playingCardsGame;

import java.util.ArrayList;

import java.util.List;

/*

* 玩家类

*/

public class Players {

int ID;

String name;

List handCards;

Players(int ID, String name){

this.ID = ID;

this.name = name;

this.handCards = new ArrayList();

}

}

手牌类:

package playingCardsGame;

/*

* 手牌类

*/

public class HandCards {

String card;

HandCards(String card) {

this.card = card;

}

}

游戏类:

package playingCardsGame;

import java.util.ArrayList;

import java.util.InputMismatchException;

import java.util.List;

import java.util.Random;

import java.util.Scanner;

/*

* 游戏类

*/

public class CardsGame {

public List cardsList;

public List shuffleList;

public List player;

public Players ps;

private Scanner console;

Random random;

public CardsGame(){

cardsList = new ArrayList();

shuffleList = new ArrayList();

player = new ArrayList();

ps = new Players(0, null);

console = new Scanner(System.in);

random = new Random();

}

String[] color = {"方片","梅花","红桃","黑桃"};

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

//创建扑克牌并洗牌

public void Cards(){

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

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

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

cardsList.add(color[i] + ch[j]);

}

}

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

System.out.print("为:[");

for(int k = 0; k < cardsList.size(); k++){

if(k < cardsList.size()-1){

System.out.print(cardsList.get(k)+",");

}else

System.out.println(cardsList.get(k)+"]");

}

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

for(int m = 0; m < cardsList.size(); m++){

int number;

do{

number = random.nextInt(cardsList.size());

}while(shuffleList.contains(cardsList.get(number).toString()));

shuffleList.add(cardsList.get(number).toString());

}

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

}

//创建玩家并进行游戏

public void Play(){

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

//自定义玩家个数并进行异常检测

int numberOfPlayers;

while(true){

System.out.println("请输入玩家个数(最少2名玩家,最多26名玩家):");

Scanner console = new Scanner(System.in);

try{

numberOfPlayers = console.nextInt();

if(numberOfPlayers > 1 && numberOfPlayers < 27){

break;

}else{

throw new Exception();

}

}catch(InputMismatchException e){

System.out.println("请输入整数类型的玩家个数!");

}catch(Exception e){

System.out.println("玩家个数不在规定范围之内!");

}

}

//获取每个玩家的ID和姓名并对ID进行异常检测

for(int i = 1; i <= numberOfPlayers; i++){

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

int ID;

while(true){

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

Scanner console = new Scanner(System.in);

try{

ID = console.nextInt();

break;

}catch(InputMismatchException e){

System.out.println("请输入整数类型的ID!");

}

}

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

String name = console.next();

player.add(new Players(ID, name));

}

for (Players player : player) {

System.out.println("-----欢迎玩家:" + player.name);

}

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

//获取所发牌的手牌序列

for(int i = 0; i < 2; i ++){

for(int j = 0; j < numberOfPlayers; j ++){

System.out.println("-----玩家:" + player.get(j).name + "-拿牌");

if(i == 0)

ps.handCards.add(new HandCards(shuffleList.get(j).toString()));

else

ps.handCards.add(new HandCards(shuffleList.get(j + numberOfPlayers).toString()));

}

}

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

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

//获取每个玩家的最大手牌序列

List maxCards = new ArrayList();

int m = 0, n = 0, p = 0, q = 0;

String max;

for(int i = 0;i < numberOfPlayers; i ++){

String card1 = ps.handCards.get(i).card.toString();

String card2 = ps.handCards.get(i + numberOfPlayers).card.toString();

//比较牌面大小

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

if(card1.substring(2).equals(ch[j]))

m = j;

if(card2.substring(2).equals(ch[j]))

n = j;

}

if(m >= n){

if(m == n){//如果牌面大小相等,再比较花色并最终得到最大值

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

if(card1.substring(0,2).equals(color[j]))

p = j;

if(card2.substring(0,2).equals(color[j]))

q = j;

}

if(p > q){

max = card1.toString();

}else{

max = card2.toString();

}

}else{

max = card1.toString();

}

}else{

max = card2.toString();

}

System.out.println("玩家:" + player.get(i).name + "最大的手牌为:" + max);

maxCards.add(max);

}

//比较最大手牌序列,先比较大小再比较花色,最后得到最大牌对应的玩家

for(int i = 0, j = 1;j < numberOfPlayers; j ++){

String card3 = maxCards.get(i).toString();

String card4 = maxCards.get(j).toString();

for(int k = 0; k < ch.length; k ++){

if(card3.substring(2).equals(ch[k]))

m = k ;

if(card4.substring(2).equals(ch[k]))

n = k;

}

if(m <= n){

if(m == n){

for(int r = 0; r < color.length; r ++){

if(card3.substring(0,2).equals(color[r]))

p = r;

if(card4.substring(0,2).equals(color[r]))

q = r;

}

if(p < q)

i = j;

}else

i = j;

}

m = i;

}

//输出游戏结果

System.out.println("--------------玩家:" +player.get(m).name + "获胜!--------------");

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

for (int i = 0; i < numberOfPlayers; i ++)

System.out.println(player.get(i).name + ":[" + ps.handCards.get(i).card.toString()

+"," + ps.handCards.get(i + numberOfPlayers).card.toString() + "]");

}

public static void main(String[] args) {

CardsGame cg = new CardsGame();

cg.Cards();

cg.Play();

}

}

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:http://www.mzph.cn/news/527358.shtml

如若内容造成侵权/违法违规/事实不符,请联系多彩编程网进行投诉反馈email:809451989@qq.com,一经查实,立即删除!

相关文章

android 获取monkey日志_Android压力测试:monkey压力测试实战

主要分享的主题是 Android App 专项测试&#xff0c;通过 monkey 进行压力测试。一.测试步骤1.安装ADB2.连接被测手机和电脑3.打开CMD命令行4.输入monkey命令adb shell monkey -p your.package.name?--pct-touch 30?--ignore-crashes ?--ignore-timeouts--throttle 250?-s …

java工程怎么构造成moven_将普通java工程结构改为由maven管理的工程结构域

第一次尝试些博客记录一下自己的学习心得!1. http://maven.apache.org/download.cgi 这是maven 的下载链接进入链接下载一个maven 包这是我的windows10 系统下载的版本2 . 将下载好的文件解压后放入任意位置(一般建议放到自己常用的文件夹下边)并记住该路径G:\xiangmuwar …

php mysql 聊天室_聊天室phpmysql(一)

//第一个页面 name"index1.php"include "../signup/mysql.php";$time1time();//$userid983530409;echo $n;if($n1){$useridtime();$nick"g".$userid;$last_time$userid;$sql"insert into chat_user (userid,id,last_time) values ($us…

在python中求小于100的所有合数_python输出100以内的质数与合数

__author__ Yue Qingxuan# -*- coding: utf-8 -*-#求质数p[2]for i in range(2,101):for temp in range(2,i):if i%temp0:breakprint(i,i,temp,temp)elif tempi-1:p.append(i)print(\n以下打印质数&#xff1a;)print(p)#求合数list[]for i in range (4,100):for j in range(2…

python 函数进度条怎么_刷新你对进度条的认识,用python写出不一样的进度条

1 简介在日常工作中&#xff0c;我们运行程序经常会用到「循环迭代」&#xff0c;假如这个执行时间很短&#xff0c;那倒也无所谓。但是有一些过程耗时蛮长的&#xff0c;给其加上「进度条」(progress bar)&#xff0c;可以帮我们监控代码执行进度&#xff0c;以及过程出现异常…

acer软件保护卡清除工具clear_使用Windows 10内置工具释放硬盘空间的最佳方法

如果您的磁盘空间不足&#xff0c;可以使用 Windows 10 中内置的工具来清理垃圾文件、应用程序和游戏等&#xff0c;以优化硬盘空间。使用这些清理工具不仅能够释放空间&#xff0c;而且还有助于提高系统性能。下面小编就为大家汇总介绍 几种种最佳快捷方法&#xff0c;来释放 …

python中astr是啥_python的基本操作

该来的还是来了&#xff0c;早先某个大胖子建议我写关于python基本操作的博客&#xff0c;当时没上心&#xff0c;现在来补点账&#xff0c;也姑且算是对往昔一点回忆吧。对了&#xff0c;那胖子&#xff0c;姓王&#xff0c;所幸不住我隔壁。闲言少叙&#xff0c;python和pych…

python字典popitem和pop_python字典popitem_python 字典之pop() and popitem()

字典删除方法&#xff1a;pop()和popitem()&#xff0c;这两种种方法的作用不同&#xff0c;操作方法及返回值都不相同。pop (key[,default])其中&#xff0c;key是必选参数&#xff0c;必须给出&#xff0c;default是可选参数&#xff0c;可以不给出。如果键值key在字典中存在…

python20个常用语法_这20个常规Python语法你都搞明白了吗?

原标题&#xff1a;这20个常规Python语法你都搞明白了吗&#xff1f;还没关注&#xff1f;Python简单易学&#xff0c;但又博大精深。许多人号称精通Python&#xff0c;却不会写Pythonic的代码&#xff0c;对很多常用包的使用也并不熟悉。学海无涯&#xff0c;我们先来了解一些…

java ftp上传超时_有关java的ftp上传文件时断网的问题

该楼层疑似违规已被系统折叠 隐藏此楼查看此楼我有一个java的ftp程序&#xff0c;他既是客户端又是服务端&#xff0c;我把程序放在两台电脑上运行&#xff0c;computer1和computer2&#xff0c;在computer1为文件上传端&#xff0c;computer2为文件的接收端&#xff0c;在comp…

在python中用递归的方法编程_python基础之函数,递归,内置函数

阅读目录一 数学定义的函数与python中的函数初中数学函数定义&#xff1a;一般的&#xff0c;在一个变化过程中&#xff0c;如果有两个变量x和y&#xff0c;并且对于x的每一个确定的值&#xff0c;y都有唯一确定的值与其对应&#xff0c;那么我们就把x称为自变量&#xff0c;把…

java spring 多数据库_java – 使用多个数据源/数据库的Spring-Hibernate

我正在开发一个使用Spring MVC 3和Hibernate的Web应用程序我想为我的Web应用程序使用2个数据源MySql和Oracle数据库,我已经阅读了很多关于“spring-hibernate multiple datasource / database”的教程和问题解决方法例如 &#xff1a;等等.但是当我每次运行它时,配置只读取我的…

canal mysql从库_大厂如何基于binlog解决多机房同步mysql数据(一)?

目录前言单一IDC多IDCmysql主从同步数据同步方案多机房mysql同步方案优化同步方案同步方案的问题如何解决重复插入对于DDL语句处理如何解决唯一索引冲突如何解决数据回环问题总结前言小伙伴们是否经常听说多机房部署&#xff0c;异地容灾&#xff1f;什么两地3中心&#xff0c;…

java语言怎么建立窗口awt,java.awt.Frame类:创建窗口

创建窗口是 AWT 编程的第一步&#xff0c;窗口是所有组件和面板的容器。在 Java AWT 中&#xff0c;我们使用 Frame 类来创建窗口。Frame 中文字意是“框架”&#xff0c;它的主要功能是建立窗口。AWT 建立窗口的步骤如下&#xff1a;设计 Frame 类对象&#xff0c;建立空白窗口…

sql数据导入错误代码: 0x80004005_SQL入门第八关 项目实战

不知不觉&#xff0c;学SQL已经一个多月了&#xff0c;每天下班学一个小时&#xff0c;有空做做练习题。从之前的焦虑到现在已经有了一定的自信了&#xff0c;猴子的课程真的很适合小白入门&#xff0c;尤其是SQL学习群里&#xff0c;助教老师很尽责&#xff0c;每个问题都会解…

虚拟主机选择php版本,虚拟主机的php版本如何选择

虚拟主机如何选择php版本&#xff1f;虚拟主机选择PHP版本&#xff0c;这是根据网站程序设置的。例如&#xff0c;新版本的WordPress需要PHP5.6和更高版本&#xff0c;而旧版本&#xff0c;如WordPress4&#xff0c;可以使用PHP5.2、5.3和其他更低版本。虚拟主机的PHP版本是什么…

php生成10万个字符串,有什么好的方法可以生成十万条不重复的13位纯数字字符串...

有什么好的方法可以生成十万条不重复的13位纯数字字符串回复内容&#xff1a;有什么好的方法可以生成十万条不重复的13位纯数字字符串一个个来。从13个0开始&#xff0c;一次加1。。。可用时间戳来生成&#xff0c;或者后面再加随机数package com.xtl.demo;import java.util.Ha…

python金融数据怎么获取_class类怎样在python中获取金融数据?

我们搜集金融数据&#xff0c;通常想要的是利用爬虫的方法。其实我们最近所学的class不仅可以进行类调用&#xff0c;在获取数据方面同样是可行的&#xff0c;很多小伙伴都比较关注理财方面的情况&#xff0c;对金融数据的需要也是比较多的。下面就class类在python中获取金融数…

有十五个数按由大到小顺序存放在一个数组中_数据结构基础 (代码效率优化, 线性表, 栈, 队列, 数组,字符串,树和二叉树,哈希表)...

作者&#xff1a;张人大代码效率优化复杂度 -- 一个关于输入数据量n的函数时间复杂度 -- 昂贵与代码的结构设计有着紧密关系一个顺序结构的代码&#xff0c;时间复杂度是O(1), 即任务与算例个数 n 无关空间复杂度 -- 廉价与数据结构设计有关数据结构 -- 考虑如何去组织计算机中…

matlab 转换图片格式,Matlab实现图片格式转换 pgm转jpg等

在Matlab下&#xff0c;转换图片格式相对比较容易&#xff0c;本文以 PGM 转 JPG 为例&#xff0c;贴出示例程序:% 将pgm图片批量转换为jpg图片function [ ] pgm2jpg( )% 读取指定目录下面所有的pgm格式图片pgms dir(C:\Users\kitty\test\*.pgm);num_pgms length( pgms );fo…