递归地添加两个二进制数,不进行逐位操作;Java作业

递归地添加两个二进制数,不进行逐位操作;Java作业,java,Java,我想我已经找到了解决家庭作业问题的方法 这是针对201 CS类的。现在我只想把逻辑弄对。目前,它并没有按预期运行,但已经接近 我们不想使用。toBinary、bitwise或其他任何东西。我们还没有学过stringBuilder,所以我想避免使用它 有一个系统。out.println();如果您从下到上阅读控制台,则在提供正确答案的方法中 public static void main(String[] args) { System.out.println(addBin(110

我想我已经找到了解决家庭作业问题的方法

这是针对201 CS类的。现在我只想把逻辑弄对。目前,它并没有按预期运行,但已经接近

我们不想使用。toBinary、bitwise或其他任何东西。我们还没有学过stringBuilder,所以我想避免使用它

有一个系统。out.println();如果您从下到上阅读控制台,则在提供正确答案的方法中

public static void main(String[] args) {

        System.out.println(addBin(1100111011,1101110011));
}

public static String addBin(int num1,int num2){

    String result = "";

    if(num1 > 0 || num2 > 0){

        int part1 = num1%10, part2 = num2%10;
        int rem1 = num1/10, rem2 = num2/10;

        result += Integer.toString((part1 + part2)%2);

        //System.out.println(result);

        int carry = (part1 + part2) /2;

        addBin(rem1 + carry, rem2);

        return result;

    }

    return result;

}
因此,本例将1100111011和1101110011与输出相加

0
1
1
1
0
1
0
1
0
1
1
0
当正确答案为11010101110时

我很难理解如何正确地“弹出”结果部分。你能帮我理解这个过程吗,可能是在这个问题的背景下


谢谢

从输出中可以看出,您正以相反的顺序获得正确的结果,但您没有将任何旧结果附加到当前正在计算的结果

在if条件中,调用addBin()函数,但不使用它在任何地方给出的结果。只需将该行更改为以下内容:

result = addBin(rem1 + carry, rem2)+result;

这将有效地将您的所有结果附加到当前答案之前,这样您就不会得到反向的结果。希望这有帮助。

您想要
System.out.println(addBin(0b1100111011,0b1101110011))?我不知道。这些是表面上直接从用户输入接收的“二进制”数字。比如,我应该能够在扫描仪中从某处获取这些数字。
addBin
返回一个值;您应该使用该返回值。这可能有助于不创建<代码>结果< /代码>变量,而只是考虑两个值<代码> AddiBin(ReM1+Road,ReM2)< /C>和<代码>整型.toStand((PAR1+PAT2)% 2)< /代码>,得到它!谢谢你的帮助。我误解了怎么做<代码>字符串结果=addBin(rem1+进位,rem2)+整数.toString((part1+part2)%2)使用字符串获取用户输入而不是int!