java - 打印易经卦象

标签 java arrays recursion

我在编码时遇到了一个问题,我似乎找不到我搞砸的地方,甚至找不到我得到错误结果的原因。

首先,让我解释一下任务。 是关于《易经卦象》的。 左边的是原始的,右边的是我的代码应该给我的结果。 enter image description here 基本上每个“卦”都包含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.formatString.replace方法。

String binary = String.format("%6s", Integer.toBinaryString(zahl)).replace(' ', '0');

这会将数字转换为二进制,将其格式化为六个空格宽的字段(必要时使用前导空格),然后将空格替换为 '0'。

关于java - 打印易经卦象,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/28355189/

相关文章:

java - 单元测试 "glue"代码或没有任何真正逻辑的代码

javascript - Node.js:文件读取并将字符串作为数组放入数组

c - 如何在 C 中对另一个数组中的两个数组求和?

javascript - 自动完成中的数组不显示任何内容

c++ - 从堆栈中删除多余的变量 - C++

algorithm - 没有栈帧代码重复的递归转换

java printf 需要帮助

java - iText、unicode 字符和 Java

java - Java多态的困惑

java - 递归方法如何打印形状