• 实验内容及要求

假设游戏者共有十人,且有10个不同的姓:张、王、李、赵、刘、于、许、金、钱、孙,魔术师将十个姓写在四张纸牌上,游戏者只需指出那几张纸上有自己的姓,魔术师就能准确的说出游戏者的姓,如图所示。

请编程实现:

  1. 分组输出姓氏,让用户选择姓氏所在的组。
  2. 给出你猜的姓氏。
  3. 在IDEA中新建“RolePlaying”项目。完成实验后,将项目导出为压缩包(“File”®“Export”®“Project to Zip File...”)。
  • 涉及的主要知识点
  1. JAVA语言的基础知识:变量定义,选择语句,循环语句,数组。
  2. 计算机基础中的进制转换。
  • 提示及预备知识

实际上是把这10个不同的姓依次编为1、2、3、4、5、6、7、8、9、10,再把这10个数用二进制表示为二进制1、10、11、100、110、111、1000、1001、1010,通过二制数据的规律将之后放在不同的组中,在用户指定的组后,根据相应的规律寻找到相应的姓氏。

2、简易代码

5.   package cn.inast.test;
import java.util.Scanner;
public class Example01 {public static void shuchu(char[] arr,int length){for(int i = 0; i<length;i++)//输出方法{System.out.print(arr[i]+" ");}System.out.println();}public static void caiMzi() {char [] xing1={'金','钱','孙'};//规律分组倒数第四位为1,二进制char [] xing2={'赵','刘','于','许'};//规律分组倒数第三位为1,二进制char [] xing3={'王','李','于','许','孙'};//规律分组倒数第二位为1,二进制char [] xing4={'张','李','刘','许','钱'};//规律分组倒数第一位为1,二进制System.out.print("1:");shuchu(xing1, xing1.length);//规律分组倒数第四位为1System.out.print("2:");shuchu(xing2, xing2.length);//规律分组倒数第三位为1System.out.print("3:");shuchu(xing3, xing3.length);//规律分组倒数第二位为1System.out.print("4:");shuchu(xing4,xing4.length);//规律分组倒数第一位为1}public static void main(String[] args) {char [] xing = {' ','张','王','李','赵','刘','于','许','金','钱','孙'};//静态初始化int[] ej = {0,0,0,0};//定义二进制数组caiMzi();//调用caiMzi方法System.out.println("请输入你所想的姓氏所在的位置:(以-1表示结束)");for(int i=0;i<10;i++) {Scanner scanner = new Scanner(System.in);int a = scanner.nextInt();if(a != -1)//若分组后,该卡片有其名字的记录为1ej[a - 1] = 1;if(a == -1)//定义结束函数break;}for(int j=0;j<4;j++)//输出对应的二进制数,转换成十进制数即为该玩家的姓{System.out.print(ej[j]);}System.out.println(" ");//换行System.out.println("你的姓氏为:");System.out.println(xing[2*2*2*ej[0]+2*2*ej[1]+2*ej[2]+ej[3]]);//输出该玩家的姓}}

3、改进代码

import java.util.Scanner;public class GuessGame {public static void main(String[] args) {int quotient;int remainder=-1;int position;char[] firstNames={' ','李','王','张','刘','陈','杨','赵','黄','周','吴'};String[] groups=new String[]{"","","","",""};for (int i = 1; i <firstNames.length ; i++) {quotient=i;position=groups.length-1;while(quotient!=0){remainder=quotient%2;quotient=quotient/2;if(remainder==1){groups[position]+=firstNames[i];}position--;}}for (int i =1;i<groups.length;i++) {System.out.println(i+":"+groups[i]);}System.out.println("请输入您所想的姓氏所在位置:(以-1表示结束):");char[] c=new char[]{'0','0','0','0'};int i=9999999;Scanner sc=new Scanner(System.in);while (true){i=sc.nextInt();if(i==-1){break;}c[i-1]='1';}System.out.println(c);int answer=0;for (i=0;i<c.length;i++){answer+=(c[i]-'0')*Math.pow(2,4-i-1);}System.out.println("您的姓氏为:");System.out.println(firstNames[answer]);}
}

4、运行实例

JAVA编程-----猜姓氏游戏相关推荐

  1. java猜字母游戏_JAVA编程题-用java编写猜字母游戏

    原标题:JAVA编程题-用java编写猜字母游戏 问题: 猜字母游戏,其游戏规则为: 程序随机产生5个按照一定顺序排列的字符作为猜测的结果,由玩家来猜测此字符串.玩家可以猜测多次,每猜测一次,则由系统 ...

  2. c语言编程题猜数字游戏6题,c语言编程—猜数字游戏.doc

    c语言编程-猜数字游戏 计算机实习报告 面向过程编程 用C语言求解实际问题 一.问题描述 游戏类第15个任务--猜数字游戏 计算机从0-9这10个数字中任意选择n个不重复数字(n≤10)组成一个5位数 ...

  3. java数字猜大小游戏_java实现猜数字小游戏

    java实现猜数字游戏 随机给定一个数字,猜大小直到正确 package com.swift; import java.util.Random; import java.util.Scanner; p ...

  4. java编程猜数字大小 (要求利用随机数自动生成一个0--100内的随机数字)

    java编程猜数字(要求利用随机数自动生成一个0–100内的随机数字) public static void main(String[] args) {int num=(int)(Math.rando ...

  5. Java实现猜数游戏

    1 问题 编写一个Java程序,实现以下功能: 2 方法 首先导入java.util包下的Random,让程序随便分配给用户一个数. 再导入java.util包下的Scanner类,构建Scanner ...

  6. java数字猜大小游戏_Java之数字猜大小

    实验代码: /* * 程序的版权和版本声明部分 * Copyright (c) 2011, 烟台大学计算机学院学生 * All rights reserved. * 文件名称: GuessNumber ...

  7. 【java】猜字游戏

    猜字游戏 首先声明一个字符数组来储存单词(由程序设计者决定储存哪些单词及个数),根据储存的下标来随机访问其中一个,作为一次猜字. 进入猜字流程的入口.设置一个字符变量entrance,初始化为'y', ...

  8. 用Java实现猜数游戏:在程序中预设一个0-9之间的整数,让用户通过键盘输入所猜的数,如果大于预设的数,显示“遗憾,太大了” ;小于预设的数,显示“遗憾,太小了” ,如此循环,直至猜中该数,

    猜数游戏 在程序中预设一个0-9之间的整数,让用户通过键盘输入所猜的数,如果大于预设的数,显示"遗憾,太大了" ;小于预设的数,显示"遗憾,太小了" ,如此循环 ...

  9. JAVA实现猜数字游戏

    需求 先来看猜数字游戏的需求: 随机生成一个1-100之间的整数,提示用户进行猜测,猜测过大则提示您猜测的整数过大,猜测过小则提示您猜测的整数过小,直到用户猜对. 需求分析 然后进行需求分析: 要想实 ...

最新文章

  1. 树梅派配置ad-hoc网络
  2. 向安卓模拟器中添加文件
  3. LDAP 轻量级目录访问协议 介绍
  4. Silverlight中服务通信方式的选择(WCF、Data Service、Ria Service)
  5. ctf之py反编译求p*q%n==1
  6. 【坑】记录型信号量/AND信号量/管程解决生产者-消费者问题
  7. potplayer设置前进后退时间-左右按键
  8. 使用Java 8 Streams进行编程对算法性能的影响
  9. 训练代码_代码简介:是的,有完全免费的代码训练营
  10. matlab chan算法定位,MATLAB实现基于Chan氏算法的三维TDOA定位
  11. Js中去除数组中重复元素的4种方法
  12. 明日方舟 长夜临光side story
  13. GOOGLE地球浏览器分析(五):KML文件基本格式
  14. windows下安装MinGW及C++的环境配置
  15. 结构方程模型-中介效应检验(Amos)
  16. python风变编程是骗局吗-黑猫投诉:风变编程诱导消费涉及退款无人答复霸王条款...
  17. 非常哇塞的 Spring Boot 性能优化长文
  18. 毕业设计必备案例:Python开发桌面程序——各种版本学生信息管理系统
  19. 最大连通分支Giant Component
  20. 学习笔记:android下获取sdcard容量大小

热门文章

  1. 1句话搞明白啥是码元、啥是比特率、啥是波特率
  2. 洛谷刷题C语言:陶瓷项链、Cow Gymnastics B、Where Am I? B、Hello, 2020!、SIR 模型
  3. 南华大学计算机科学学院,计算机科学与技术学院89级校友回校联谊
  4. 变速自行车的变速、省力原理与窍门
  5. 华为端到端项目管理流程_华为这段话是我见过对端到端流程本质最精辟的阐述...
  6. 唯爱kindle paperwhite 2
  7. 安卓View可见,不可见,隐藏。
  8. 网络图片URL转化为Bitmap对象
  9. 韦东山-首批华为鸿蒙系统课程开发者
  10. kali教你路由转发