一个3 * 3的矩阵中放置了9个硬币,这些硬币有些面朝上有朝下。可以使用3 * 3矩阵中的0表示正面 1 表示反面:

0 0 0                 1 0 1        1 1  0        1 0 0

0 1 0                 0 0 1        1 0 0         1 1 1

0 0 0                 1 0 0         0 0 1        1 1

每个状态使用一个二进制数表示:
000010000         101001100         110100001         100111110
        总共512种可能,所以可以使用十进制数0···511表示所有状态。编写一个程序,提示用户输入一个在0到511之间的数字,然后用字符H和T表示的对应的矩阵。0表示H,1表示T。


package pack2;import java.util.Scanner;public class NineCoins {public static void main(String[] args) {game();}/**九个正面和背面*/public static void game() {try(Scanner input = new Scanner(System.in);) {System.out.print("Enter a number between 0 and 511: ");printMatrix(getArray(input.nextInt()));}}/**获取字符数组*/public static char[][] getArray(int number) {final int ROW_COLUMN = 3;    //行列数char[][] coins = new char[ROW_COLUMN][ROW_COLUMN];    //硬币//整数转换为二进制后作为创建字符串缓冲器的参数StringBuffer stringBuffer = new StringBuffer(Integer.toBinaryString(number));stringBuffer.reverse();   //字符串缓冲器逆转while(stringBuffer.length() < 9)stringBuffer.append(0);    //字符串缓冲器长度小于9时,前面补0for (int i = 0, k = stringBuffer.length() - 1; i < coins.length; i++) for (int j = 0; j < coins.length; j++) coins[i][j] = (stringBuffer.charAt(k--) == '1') ? 'T' : 'H';return coins;}/**打印矩阵*/public static void printMatrix(char[][] array) {for (int i = 0; i < array.length; i++) {for (int j = 0; j < array.length; j++) System.out.print(" " + array[i][j]);System.out.println();}}
}

Java、九个硬币的正反面相关推荐

  1. Java黑皮书课后题第8章:**8.11(游戏:九个硬币的正反面)一个3*3的矩阵中放置了9个硬币,这些硬币有些面朝上有朝下。1表示正面0表示反面,每个状态使用一个二进制数表示。使用十进制数表示状态

    **8.11(游戏:九个硬币的正反面)一个3*3的矩阵中放置了9个硬币,这些硬币有些面朝上有朝下.1表示正面0表示反面,每个状态使用一个二进制数表示. 题目 题目描述与运行示例 破题:注意对应关系(已 ...

  2. Java黑皮书课后题第3章:3.14(游戏:猜硬币的正反面)编写程序,让用户猜一猜是硬币的正面还是反面。随即产生一个整数0或1,分别表示

    3.14(游戏:猜硬币的正反面)编写程序,让用户猜一猜是硬币的正面还是反面 题目 题目概述 破题 代码 题目 题目概述 3.14(游戏:猜硬币的正反面)编写程序,让用户猜一猜是硬币的正面还是反面 随即 ...

  3. 你有没有扔过一枚硬币选择正反面?

    除了阳光没有什么可以笼罩世界 除了雨没有什么可以画出彩虹 除了雪没有什么可以洁白大地 除了风没有什么可以吹动树叶 你有没有看到自己眼中的绝望 你有没有听见痛彻心肺的哭声 你有没有感到心如花朵般枯萎 你 ...

  4. Java实现凑硬币或者最少硬币数

    标题:Java实现凑硬币或者最少硬币数 参考视频:参考视频 建议可以看完视频后,再来写代码,或者看这个blog 示例: 作为dp问题求解: public int coinChange(int[] co ...

  5. 动态规划示例汇总-Java版(组合硬币、跳台阶、最小路径和、最长递增子序列、最长公共子序列、01背包问题、最小编辑代价)

    动态规划算法示例汇总-Java版 组合硬币 Java解题-暴力搜索 Java解题-记忆搜索 Java解题-动态规划(两种写法) 跳台阶 Java解题-暴力递归 Java解题-动态规划 矩阵最小路径和 ...

  6. java九种数据类型以及封装类

    在java中基本的数据类型有九种分别是boolean,char,int,float,byte,short,long,double,void. 相对应的封装类有Boolean,Character,Int ...

  7. java 倍数_Java硬币翻转倍数递增试算实例

    import java.util.Scanner; /** * * @author cc 举例 100枚硬币,最初全部朝下,第一次将所有硬币反转过来, 第二次反转位置是2的倍数的硬币, *       ...

  8. java模拟抛硬币的结果

    本文只模拟抛一个硬币的结果, 所以只有两个结果, 一是正面朝上, 一是反面朝上 import java.util.Random;public class Coin {public static voi ...

  9. java模拟扔硬币的结果

    这里只模拟抛一枚硬币,即只有两种结果:正面(1)和反面(0). [java]  view plain  copy import java.util.Random; /** * 模拟扔硬币的结果 * @ ...

最新文章

  1. UVA 10954 Add All
  2. 如何修复java.lang.UnsupportedClassVersionError:不支持的major.minor版本
  3. linux管理磁盘和文件系统
  4. Flex DES加密
  5. Magento : Make 'Continue Shopping' button redirect to the product index page
  6. 环境变量简单介绍windows-linux-mac
  7. 【转】对Java Serializable(序列化)的理解和总结
  8. B00010 map
  9. 清华大学发布OpenNE:用于网络嵌入的开源工具包
  10. 可能是阿里最古老的流程引擎:PMC的架构与设计分享
  11. html 显示编辑xml文件,如何将 XML 文件显示为 HTML 表格展示
  12. QQ是成年人的“不老神仙水”
  13. android自定义组件(手机加速球+水面波动效果)
  14. Spring事务同步synchronized一起使用引发的问题
  15. arris sbr-ac1900p/sbr-ac3200p梅林固件
  16. 软件卸载不了怎么办?快用IObit Uninstaller Pro软件卸载大师
  17. 使用示波器的正确姿势
  18. 配置数据源(DataSource)
  19. w311m linux驱动下载,腾达W311MI网卡驱动
  20. 1.4_7 Axure RP 9 for mac 高保真原型图 - 案例6 【旋转的唱片4】进度条_拖拽、点击

热门文章

  1. 人形时钟代码php,[精品]炫酷的人形时钟代码
  2. 体验文心一言AI大模型生成哈佛大学、麻省理工学院、牛津大学、剑桥大学、巴黎高师、巴黎政治学院、巴黎大学、巴黎第五大学和里昂商学院简介
  3. css动画帧动画效果,CSS3动画之逐帧动画
  4. 2022年电工初级电工证(五级)电工操作证试题精选及答案
  5. DTSOFT Virtual CDRom Device
  6. 希沃白板5和html5,希沃白板5官方版
  7. 痤疮(又叫青春痘、粉刺、毛囊炎)
  8. wget和mwget的安装
  9. Mems传感器的七大分类是哪些?
  10. 【网络教程】sublime text3 如何实现自动缩进排版