java - 梁 - 正面与反面的游戏

标签 java random

我被梁 Java 简介书中的一个问题所困扰 - 问题如下:

“十六枚硬币被放置在一个 4×4 矩阵中,其中一些面朝上,一些面朝下。您可以使用值为 0(头)和 1(尾)的 4×4 矩阵来表示硬币的状态。以下是一些示例:

0000
0100
0000
0010

每个状态也可以使用二进制数(上述的串联)来表示。编写一个程序,提示用户输入 0 到 65,536 之间的数字并显示相应的矩阵 - 7 的值将给出 00000111。

我的问题是您如何验证 7 的情况是否如此?我什至不确定如何开始对这样的方法进行原型(prototype)设计 - 也许 int x = (int)Math.rand(1) 并分配给每个行/列?

也许有人可以给我一些关于从哪里开始的提示?

最佳答案

问题本质上是将 [0, 65536] 范围内的整数转换为其二进制表示形式。这可以通过 Integer.toBinaryString 来完成。例如,

Integer.toBinaryString(7);

将产生字符串111。现在,我们希望字符串的总长度为16,因此需要在左侧补上0,得到0000000000000111。我们可以做这样的事情:

String.format("%16s", Integer.toBinaryString(7)).replace(' ', '0');

结果是字符串0000000000000111

一旦你有了这个,你可以简单地将它复制到 4x4 int (或 boolean )数组中。或者,您可以立即打印数据,

String bin = String.format("%16s", Integer.toBinaryString(7)).replace(' ', '0');

for (int i = 0 ; i < 4 ; i++)
    System.out.println(bin.substring(4 * i, 4 * (i + 1)));

输出:

0000   
0000  
0000  
0111

当然,您可以将 7 替换为您从用户那里读取的任何整数,但想法是相同的。

关于java - 梁 - 正面与反面的游戏,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/13145108/

相关文章:

java - JComboBox - 如何呈现时间值的名称

java - 如何创建带有加载动画的自定义 View - 从左到右填充自定义文本?

java - 在我的项目中使用 jar 时出错

java - 如何创建一个有范围的随机数?

java - 类型不匹配 : cannot convert from int to int[]

python - Python 中来自值列表的加权随机数

java - 如何打包 JUnit 测试

java - 如何停止 swt 上的按键事件传播

python - 如何随机化现有的字节数组?

vba - VBA 上的线性同余生成器