我在编码时遇到了一个问题,我似乎找不到我搞砸的地方,甚至找不到我得到错误结果的原因。
首先,让我解释一下任务。 是关于《易经卦象》的。 左边的是原始的,右边的是我的代码应该给我的结果。 基本上每个“卦”都包含6行,可以下潜也可以不下潜。
所以一共有
2^6 = 64 个可能的“卦”
任务是计算并编写一个方法来打印所有可能的组合。
这就是我目前所拥有的:
public class test {
public String toBin (int zahl) {
if(zahl ==0) return "0";
if (zahl ==1 ) return "1";
return ""+(toBin( zahl/2)+(zahl%2));
}
public void show (String s) {
for (char c : s.toCharArray()){
if (c == '1'){
System.out.println("--- ---");
}
if(c=='0'){
System.out.println("-------");
}
}
}
public void ausgeben (){
for(int i = 0 ; i < 64; i++) {
show (toBin(i));
}
}
}
问题是,当我用“10”测试“显示”方法时,我得到了 3 行而不是预期的 2 行。
public class runner {
public static void main(String[] args){
test a = new test();
a.ausgeben();
a.show("10");
}
}
我遇到的另一个问题是,由于我正在转换为二进制文件,所以有时我没有足够的行,因为例如二进制文件中的 10 是 0001010,但缺少第一个“0”。如何在不做太多更改的情况下以简单的方式实现它们?
我对这一切还很陌生,所以如果我没有充分解释任何内容或犯了任何错误,请随时告诉我。
最佳答案
如果使用 Integer.toBinaryString
,您可能会发现它更容易方法结合 String.format
和 String.replace
方法。
String binary = String.format("%6s", Integer.toBinaryString(zahl)).replace(' ', '0');
这会将数字转换为二进制,将其格式化为六个空格宽的字段(必要时使用前导空格),然后将空格替换为 '0'。
关于java - 打印易经卦象,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/28355189/