你可能不明白我写的内容,因为英语不是我的第一语言。
无论如何,这是我写的。
public class Exercises7point11 {
public static void main(String[] args) {
java.util.Scanner input = new java.util.Scanner(System.in);
int[][] binaryNumber = {{0,0,0},{0,0,0},{0,0,0}};
System.out.print("Enter a number between 0 and 511: ");
int decimalNumber = input.nextInt();
int subtractNumber = 256, number = decimalNumber;
for (int row = 0 ; row < 3; row++){
for (int column = 0 ; column < 3; column++) {
if(number >= subtractNumber) {
binaryNumber[row][column] = 1;
number = number - subtractNumber;
}
else {
subtractNumber = subtractNumber / 2;
binaryNumber[row][column] = 0;
}
}
}
// print
for (int row = 0; row < binaryNumber.length; row++){
for (int column = 0; column < binaryNumber[row].length; column++){
if (binaryNumber[row][column] == 1)
System.out.print("T ");
else if (binaryNumber[row][column] == 0)
System.out.print("H ");
if (column == 2)
System.out.print("\n");
}
}
}
以下是详细信息。九枚硬币放在一个3乘3的矩阵中,一些面朝上,一些面朝下。您可以使用值为0(头部)和1(尾部)的3乘3矩阵来表示硬币的状态。 如,
1 0 0
0 1 0
1 1 0。
总共有512种可能性,因此我可以使用十进制数0,1,2,3,...,511来表示矩阵的所有状态。编写一个程序,提示用户输入0到511之间的数字,并显示字符为H和T的相应矩阵。
我的问题是&#34; subtractNumber = subtractNumber / 2; binaryNumber [row] [column] = 0;&#34;在18和19行。即使&#39;数大于或等于subtractNumber,也会读取18和19行。
我不知道如何解决它。
非常感谢!!
答案 0 :(得分:0)
输出是3x3矩阵,但这并不意味着你需要使用2d数组。
这是一种更简单的方法。我们使用toBinaryString方法将用户的输入转换为二进制字符串,然后将二进制字符串转换为H / T.
public static void main(String[] args) {
Scanner sc = new Scanner(System.in);
System.out.print("Enter a number between 0 and 511: ");
int input = sc.nextInt();
// Turn input to binary string
String binary = Integer.toBinaryString(input);
// Add enough zeros in front so that the string has 9 characters
binary = binary.format("%09d", Integer.parseInt(binary));
// Iterate through binary string one char at a time
for (int i = 1; i < 10; i++) {
if ('0' == binary.charAt(i - 1)) {
System.out.print("H ");
} else {
System.out.print("T ");
}
// New line after 3 letters
if (i % 3 == 0) {
System.out.println();
}
}
}
示例输出
二进制12是000001100Enter a number between 0 and 511: 12
H H H
H H T
T H H