java猜测用户暗记的某张扑克牌
需求分析
编程序,让计算机来猜测用户“暗记”的某张扑克牌:计算机从一副扑克牌(54张)中任意抽出27张,摆放在不同的三行上(每行9张),用户“暗记”某张纸牌,而后告诉计算机所“暗记”的那张纸牌处于哪一行中;之后计算机再两次将纸牌重新摆放,并让用户再回答两次相同的提问(那张纸牌在重新摆放后又处在哪一行上);此时计算机会将用户所“暗记”的那张纸牌给挑出来。
输入形式: 输入某张扑克牌所在的行数
输出形式: 打印出一分为三后扑克牌排放的位置。
程序所能达到的功能: 能够让计算机自动识别出用户暗记的某张扑克牌
测试数据: 根据随机数选定扑克牌而定。
1.2 概要设计:
本题的主要设计思路:首先初始化扑克显示状况,然后用select()函数任意挑选扑克牌,但挑选时不能出现任意两张相同的扑克牌。调用put()函数进行两次“一分为三”思想的操作,同时用array1数组存放第一次选取的行数的扑克。用array2数组存放第二次选取的三张扑克牌。这时候用户所暗记的扑克必定在array2数组中。调用display()函数进行每次操作的显示。
1.3 详细设计与编码见上传程序。
1.4 调试分析
在这个程序设计过程中,主要是寻找进行“一分为三”思想操作时扑克牌位置移动的规律。在第一次移动过程中,已经满足了设计的要求,又进行另外的移动,这是不允许的。
其实这个操作的第一次移动比较简单,困难的是第二次移动,主要涉及到的是数组下标的转换,对此操作要特别小心,否则打印出的结果显示就不正确。
1.5 用户使用与说明
用户根据自己选中的扑克牌,进行此扑克牌的定位。
1.6 测试数据:
假设暗记住c-7牌
1.7 设计心得
通过此次实验,让我了解了“一分为三”的基本思想,其实说实在的就是数组下标的转换,只要心够细,此道问题的求解相对来说就比较容易了。
import java.util.Scanner;
import java.util.ArrayList;
class Guess {
Guess(){
for(int i=0;i<13;++i){
if(i==0){
原文请找腾讯752018766辣,文-论'文.网http://www.751com.cn/ }else if(i==12){
puke.add("K");
}else{
puke.add(String.valueOf(i+1));
}
}
king.add("KING1");
king.add("KING2");
}
public void select(){
int color=(int)(Math.random()*5); //0代表a色,1代表b色,2代表c色,3代表d色,4代表king
int index=(int)(Math.random()*12); //得到选择牌子的下标
if(color==0){
if(list.contains((String)("a-"+puke.get(index))))
select();
else
list.add("a-"+puke.get(index));
}
if(color==1){
if(list.contains((String)("b-"+puke.get(index))))
select();
else
list.add("b-"+puke.get(index));
}
if(color==2){
if(list.contains((String)("c-"+puke.get(index))))1829