Java综合性实验-猜姓氏游戏解析

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

请编程实现:

  1. 分组输出姓氏,让用户选择姓氏所在的组。
  2. 给出你猜的姓氏。

涉及知识点:

  1. JAVA语言的基础知识:变量定义,选择语句,循环语句,数组。
  2. 计算机基础中的进制转换。

最终实现效果图为:

 分析问题,可以看到这个问题主要涉及的就是进制转化问题,让实验符合效果图首先要实现的效果是打印出结果中的各个选项在这里直接使用sout打印语句进行打印效果为:

  System.out.println("1.张 李 刘 许 钱  \n2.王 李 于 许 孙 \n3.赵 刘 于 许 \n4.金 钱 孙");

解题思路为先将姓氏统一编到数组里,再由二进制数据转换为十进制,调用数组对应位置的姓氏,考虑到姓氏只有十个 根据二进制转换效果0000对应位置8421,确定只要最多四个二进制数字就能确定十个姓氏的所在位置,考虑到数组中存在第0位所以将对应十进制数字-1处理,也可以将第一个位置{0}进行留空处理在这里我们直接使用减1,所以直接进行代码编写:

package Middle_test;

import java.util.Scanner;

public class IO_01 {
    public static void main(String[] args) {
        int nurmeber = 0;
        char[] test_name = {'张', '王', '李', '赵', '刘', '于', '许', '金', '钱', '孙', ' '};
        System.out.println("1.张 李 刘 许 钱  \n2.王 李 于 许 孙 \n3.赵 刘 于 许 \n4.金 钱 孙");
        System.out.println("请从上面这些选项中找出猜测的姓氏");
        Scanner sc = new Scanner(System.in);     
        while (true){
            System.out.println("请输出你猜测的姓氏在第几行(确认猜测姓氏不在其他行后输入‘-1’退出):");
            int i =sc.nextInt();
            if(i==-1)
            {
                break;
            }
            if (i == 1){
                nurmeber += 1;
            }
            if (i == 2){
                nurmeber += 10;
            }
            if (i == 3){
                nurmeber += 100;
            }
            if (i == 4){
                nurmeber += 1000;
            }
        }

        int decimal = Integer.parseUnsignedInt(String.valueOf(nurmeber),2);
        // ↑↑↑将int 数值先使用数值转换转换为String类型,后通过二进制转为int型
            System.out.println("您的姓氏为:"+test_name[decimal -1]);
        }
    }

  • 10
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值