【发布时间】:2018-09-16 18:57:21
【问题描述】:
这是我们被分配的问题:
九个硬币被放置在一个 3x3 矩阵中,一些面朝上,一些面朝下。您可以使用值为 0(正面)和 1(反面)的 3x3 矩阵来表示硬币的状态。以下是一些示例:
0 0 0 1 0 1 1 1 0 0 1 0 0 0 1 1 0 0 0 0 0 1 0 0 0 0 1
每个状态也可以用二进制数表示。例如,前面的矩阵对应的数字:
000010000 101001100 110100001
一共有512种可能,所以可以用十进制数0、1、2、3、...、511来表示矩阵的所有状态。
编写一个程序,提示用户输入一个介于 0 和 511 之间的数字,并显示相应的矩阵,其中包含字符 H 和 T。
我希望 toBinary() 方法填充数组 binaryNumbers。我意识到这并没有在左边填充 0。我必须考虑清楚,但这是唯一的问题吗?
//https://www.geeksforgeeks.org/java-program-for-decimal-to-binary-conversion/
import java.util.Scanner;
public class HeadsAndTails {
public static void main(String[] args) {
Scanner input = new Scanner(System.in);
int num = input.nextInt();
int[] binaryNumbers = toBinary(num);
for (int i = 0; i < 9; i++) {
printArr(binaryNumbers);
System.out.print(binaryNumbers[1]);
}
}
public static int[] toBinary(int inputtedNumber) {
int[] binaryNum = new int[9];
int i = 0;
while (inputtedNumber > 0) {
binaryNum[i] = inputtedNumber % 2;
inputtedNumber = inputtedNumber/2;
inputtedNumber++;
} return binaryNum;
}
public static void printArr(int[] arr) {
for (int i = 0; i < 9; i++) {
if (arr[i] == 0) {
System.out.print("H ");
} else {
System.out.print("T ");
}
if (arr[i+1] % 3 == 0) {
System.out.println();
} System.out.print(arr[i]);
}
}
}
【问题讨论】:
-
在
toBinary函数i的while循环内部没有改变。 -
我没有运行您的代码,但您似乎打印了 9 次相同的结果。
for (int i = 0; i < 9; i++) { printArr(binaryNumbers); ... }
标签: java arrays methods computer-science