仅供引用:这是一个练习作业。我一直在努力,但现在我被困住了。任何提示/帮助将不胜感激。我已经盯着它看了一段时间,但没有取得任何进展。
问题总结: 九枚硬币被放置在一个 3x3 矩阵中,一些面朝上,一些面朝下。 Heads = 0 and tails = 1。每个状态也可以使用二进制数表示。有512种可能性。问题:编写一个程序,要求用户输入 0-511 之间的数字,并显示相应的矩阵,其中包含字符 H 和 T,如下所示:
用户输入数字 7(即 000000111 或 HHHHHHTTT) 显示应该是: 啊啊啊 啊啊啊 T T T
这就是我目前所拥有的。我不一定要答案,我只是想朝着正确的方向前进。谢谢
import java.util.Scanner;
public class converting {
public static void main(String[] ar) {
Scanner s = new Scanner(System.in);
System.out.print("Enter a number between 0 and 511: ");
int number = s.nextInt();
if(number <= 511 && number > 0)
{
String bin = Integer.toBinaryString(number);
String tails = bin.replace('1', 'T');
int count = 0;
char[] arr = tails.toCharArray();
for (int i = 0; i < arr.length; i++) {
System.out.print(arr[i]);
count++;
if (count == 3) {
System.out.println();
count = 0;
}
}
}
else{
System.out.print("Please enter a number between 0 and 511\n");
}
}
}
最佳答案
你真的很接近。一些注意事项:
Scanner#nextInt
可以抛出异常;优雅地处理它们。- 您需要检查
number
是否在范围 (0-511) 内。 - 一旦有了
bin
,您就有了 1-9 个二进制数字 --0
和1
。你想确保正好有 9 个,所以在前面插入任何缺失的0
。 - 你现在有 9 个
0
和1
;你想要H
和T
。查看String#replace
. - 您现在有一个包含 9 个
H
和T
的字符串。分三行输出,每行三个字符。查看String#substring
.
关于java - 二进制转字符矩阵帮助,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/2225678/