仅供参考:这是一项练习作业。我一直在努力,但现在我被卡住了。任何提示/帮助将不胜感激。我已经盯着它看了一会儿,没有取得任何进展。
总结问题: 九个硬币放在3x3矩阵中,一些面朝上,一些面朝下。 Heads = 0且tails = 1.每个状态也可以使用二进制数表示。有512种可能性。问题:编写一个程序,询问用户0-511之间的数字,并显示字符为H和T的相应矩阵,如下所示:
用户输入数字7(即000000111或HHHHHHTTT) 显示应该是: H H H. H H H. 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");
}
}
}
答案 0 :(得分:4)
你真的很亲密。一些说明:
Scanner#nextInt
可以抛出异常;优雅地处理它们。number
是否在范围内(0-511)。bin
后,您有1-9个二进制数字 - 0
和1
s。你想确保你有9个,所以在前面插入任何遗漏的0
。0
和1
s;你想要H
和T
。查看String#replace
。H
和T
s的字符串。输出三行,每行三个字符。查看String#substring
。答案 1 :(得分:1)
intToString.toCharArray();
这应该是bin.toCharArray()
,也可以是。
你还遇到了什么问题?
答案 2 :(得分:1)
String.replace(CharSequence, CharSequence)
在这里可能很有用。
答案 3 :(得分:1)